home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #2 / Amiga Plus CD - 2004 - No. 02.iso / AmiSoft / Misc / emu / Wzonka-Lad.lha / Wzonka-Lad / src / z80_crippled_I.s < prev    next >
Text File  |  2003-08-11  |  190KB  |  6,699 lines

  1.  
  2. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3. ;        gb-z80 processor emulator, gameboy edition for Wzonka-Lad
  4. ;        (c) 1996-1999 Ville Helin
  5. ;
  6. ;        If you find places for bugfixes and report them first,
  7. ;        you'll get yourself a key, and one for your friend as well.
  8. ;
  9. ;        Bug reports, etc. to vhelin@cc.hut.fi
  10. ;
  11. ;        INPUT:
  12. ;        d0    = 0.W, d.B, e.B.
  13. ;        d1    = 0.W, b.B, c.B.
  14. ;        d2    = 0.W, h.B, l.B.
  15. ;        d3    = 0.W, f.B, a.B.
  16. ;        d4    = 0.W, ccr.W.
  17. ;        d5    = 0.W, sp.W.
  18. ;        a0    = pointer to z80 code.
  19. ;        a1    = base pointer to the z80 jump table.
  20. ;        a2    = base pointer to gameboy memory.
  21. ;        a3    = base pointer to rom switched area.
  22. ;        a4    = base pointer to the z80 $cb jump table.
  23. ;        a5    = the amount of cycles to do.
  24. ;        NOTE:
  25. ;        f    is emulated through amiga's own status register,
  26. ;            so it is not stored as z80's status register, but
  27. ;            a conversion is always executed when needed (rarely).
  28. ;        h    = half carry   flag.
  29. ;        n    = substraction     .
  30. ;        z    = zero             .
  31. ;        c    = carry            .
  32. ;        f    = 000xnzvc (680x0)  .
  33. ;            = znhc0000 (z80)(gb).
  34. ;        680x0    flags = xnzvc--.
  35. ;        z80(gb)    flags = --z-cnh.
  36. ;        f    = 0nhxnzvc (680x0 + emulated xx.B n.6 & h.5).
  37. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  38.  
  39. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  40. ;        a normal cpu sweep begins here
  41. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  42.  
  43.         cnop    0,4
  44. z80_cpu_sweep:    move.l    z80_cycles,a5                ;a5 = cycles to do.
  45.         moveq.l    #0,d7
  46.         fetch_next_i
  47.  
  48. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  49. ;        the z80 instruction jump table
  50. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  51.  
  52.         cnop    0,128
  53. z80_jump_table:
  54.  
  55. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  56. ;        00 - NOP
  57. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  58.  
  59. z80_optcode_00:    subq.l    #1,a5
  60.  
  61.         fetch_next_i
  62.         cnop    0,128
  63.  
  64. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  65. ;        the z80 extended ($cbxx) instruction jump table (interleacved
  66. ;        with the z80 $xx jumps)
  67. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  68.  
  69. z80_jump_tbl_cb:
  70.  
  71. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  72. ;        CB00 - RLC B - [n = 0, h = 0, c = x, z = x]
  73. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  74.  
  75. z80_optc_CB00:    ror.w    #8,d1
  76.         subq.l    #2,a5
  77.         rol.b    #1,d1
  78.         move.w    CCR,d4
  79.         rol.w    #8,d1
  80.  
  81.         fetch_next_i
  82.         cnop    0,128
  83.  
  84. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  85. ;        01 - LD BC, xx
  86. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  87.  
  88. z80_optcode_01:    move.w    (a0)+,d1
  89.         subq.l    #3,a5
  90.         ror.w    #8,d1
  91.  
  92.         fetch_next_i
  93.         cnop    0,128
  94.  
  95. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  96. ;        CB01 - RLC C - [n = 0, h = 0, c = x, z = x]
  97. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  98.  
  99. z80_optc_CB01:    subq.l    #2,a5
  100.         rol.b    #1,d1
  101.         move.w    CCR,d4
  102.  
  103.         fetch_next_i
  104.         cnop    0,128
  105.  
  106. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  107. ;        02 - LD (BC), A
  108. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  109.  
  110. z80_optcode_02:    subq.l    #2,a5
  111.         move.l    gb_mem_jumps,a6
  112.         move.w    d1,d7
  113.         move.b    d3,d6
  114.         jsr    ([a6,d1.l*4])
  115.  
  116.         fetch_next_i
  117.         cnop    0,128
  118.  
  119. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  120. ;        CB02 - RLC D - [n = 0, h = 0, c = x, z = x]
  121. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  122.  
  123. z80_optc_CB02:    ror.w    #8,d0
  124.         subq.l    #2,a5
  125.         rol.b    #1,d0
  126.         move.w    CCR,d4
  127.         rol.w    #8,d0
  128.  
  129.         fetch_next_i
  130.         cnop    0,128
  131.  
  132. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  133. ;        03 - INC BC
  134. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  135.  
  136. z80_optcode_03:    subq.l    #2,a5
  137.         addq.w    #1,d1
  138.  
  139.         fetch_next_i
  140.         cnop    0,128
  141.  
  142. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  143. ;        CB03 - RLC E - [n = 0, h = 0, c = x, z = x]
  144. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  145.  
  146. z80_optc_CB03:    subq.l    #2,a5
  147.         rol.b    #1,d0
  148.         move.w    CCR,d4
  149.  
  150.         fetch_next_i
  151.         cnop    0,128
  152.  
  153. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  154. ;        04 - INC B - [n = 0, h = x, c = c, z = x]
  155. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  156.  
  157. z80_optcode_04:    ror.w    #8,d1
  158.         subq.l    #1,a5
  159.  
  160.         addq.b    #1,d1
  161.         beq.s    z80_optcode_04_z
  162.  
  163.         rol.w    #8,d1
  164.         and.b    #%1,d4                    ;z = 0.
  165.  
  166.         fetch_next_i
  167.         cnop    0,4
  168.  
  169. z80_optcode_04_z:
  170.         rol.w    #8,d1
  171.         or.b    #%100,d4                ;z = 1.
  172.  
  173.         fetch_next_i
  174.         cnop    0,128
  175.  
  176. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  177. ;        CB04 - RLC H - [n = 0, h = 0, c = x, z = x]
  178. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  179.  
  180. z80_optc_CB04:    ror.w    #8,d2
  181.         subq.l    #2,a5
  182.         rol.b    #1,d2
  183.         move.w    CCR,d4
  184.         rol.w    #8,d2
  185.  
  186.         fetch_next_i
  187.         cnop    0,128
  188.  
  189. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  190. ;        05 - DEC B - [n = 1, h = x, c = c, z = x]
  191. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  192.  
  193. z80_optcode_05:    ror.w    #8,d1
  194.         subq.l    #1,a5
  195.  
  196.         subq.b    #1,d1
  197.         beq.s    z80_optcode_05_z
  198.  
  199.         and.b    #%1,d4                    ;z = 0.
  200.         rol.w    #8,d1
  201.  
  202.         fetch_next_i
  203.         cnop    0,4
  204.  
  205. z80_optcode_05_z:
  206.         or.b    #%100,d4                ;z = 1.
  207.         rol.w    #8,d1
  208.         
  209.         fetch_next_i
  210.  
  211.         cnop    0,128
  212.  
  213. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  214. ;        CB05 - RLC L - [n = 0, h = 0, c = x, z = x]
  215. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  216.  
  217. z80_optc_CB05:    subq.l    #2,a5
  218.         rol.b    #1,d2
  219.         move.w    CCR,d4
  220.  
  221.         fetch_next_i
  222.         cnop    0,128
  223.  
  224. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  225. ;        06 - LD B, x
  226. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  227.  
  228. z80_optcode_06:    ror.w    #8,d1
  229.         subq.l    #2,a5
  230.         move.b    (a0)+,d1
  231.         rol.w    #8,d1
  232.  
  233.         fetch_next_i
  234.         cnop    0,128
  235.  
  236. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  237. ;        CB06 - RLC (HL) - [n = 0, h = 0, c = x, z = x]
  238. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  239.  
  240. z80_optc_CB06:    move.b    (a2,d2.l),d6
  241.         subq.l    #4,a5
  242.         rol.b    #1,d6
  243.         move.w    CCR,d4
  244.         move.b    d6,(a2,d2.l)
  245.  
  246.         fetch_next_i
  247.         cnop    0,128
  248.  
  249. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  250. ;        07 - RLCA - [n = 0, h = 0, c = x, z = 0]
  251. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  252.  
  253. z80_optcode_07:    rol.b    #1,d3
  254.         move.w    CCR,d4
  255.         subq.l    #1,a5
  256.         and.b    #%1,d4
  257.  
  258.         fetch_next_i
  259.         cnop    0,128
  260.  
  261. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  262. ;        CB07 - RLC A - [n = 0, h = 0, c = x, z = x]
  263. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  264.  
  265. z80_optc_CB07:    subq.l    #2,a5
  266.         rol.b    #1,d3
  267.         move.w    CCR,d4
  268.  
  269.         fetch_next_i
  270.         cnop    0,128
  271.  
  272. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  273. ;        08 - LD (xx), SP
  274. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  275.  
  276. z80_optcode_08:    move.w    (a0)+,d7
  277.         move.w    d5,d6
  278.         ror.w    #8,d7
  279.         ror.w    #8,d6
  280.         subq.l    #5,a5
  281.         move.w    d6,(a2,d7.l)
  282.  
  283.         fetch_next_i
  284.         cnop    0,128
  285.  
  286. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  287. ;        CB08 - RRC B - [n = 0, h = 0, c = x, z = x]
  288. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  289.  
  290. z80_optc_CB08:    ror.w    #8,d1
  291.         subq.l    #2,a5
  292.         ror.b    #1,d1
  293.         move.w    CCR,d4
  294.         rol.w    #8,d1
  295.  
  296.         fetch_next_i
  297.         cnop    0,128
  298.  
  299. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  300. ;        09 - ADD HL, BC - [n = 0, h = ?, c = x, z = z]
  301. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  302.  
  303. z80_optcode_09:    add.w    d1,d2
  304.         move.w    CCR,d7
  305.         and.b    #%11111110,d4
  306.         and.b    #%1,d7
  307.         subq.l    #2,a5
  308.         or.b    d7,d4
  309.  
  310.         fetch_next_i
  311.         cnop    0,128
  312.  
  313. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  314. ;        CB09 - RRC C - [n = 0, h = 0, c = x, z = x]
  315. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  316.  
  317. z80_optc_CB09:    subq.l    #2,a5
  318.         ror.b    #1,d1
  319.         move.w    CCR,d4
  320.  
  321.         fetch_next_i
  322.         cnop    0,128
  323.  
  324. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  325. ;        0A - LD A, (BC)
  326. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  327.  
  328. z80_optcode_0A:    subq.l    #2,a5
  329.  
  330.         tst.w    d1                    ;rom read?
  331.         blt.s    read_d1_to_d3ax                ;nope. from ram!
  332.  
  333.         move.b    (a3,d1.l),d3
  334.  
  335.         fetch_next_i
  336.         cnop    0,4
  337.  
  338. read_d1_to_d3ax:move.b    (a2,d1.l),d3                ;ram read.
  339.  
  340.         fetch_next_i
  341.         cnop    0,128
  342.  
  343. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  344. ;        CB0A - RRC D - [n = 0, h = 0, c = x, z = x]
  345. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  346.  
  347. z80_optc_CB0A:    ror.w    #8,d0
  348.         subq.l    #2,a5
  349.         ror.b    #1,d0
  350.         move.w    CCR,d4
  351.         rol.w    #8,d0
  352.  
  353.         fetch_next_i
  354.         cnop    0,128
  355.  
  356. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  357. ;        0B - DEC BC
  358. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  359.  
  360. z80_optcode_0B:    subq.l    #2,a5
  361.         subq.w    #1,d1
  362.  
  363.         fetch_next_i
  364.         cnop    0,128
  365.  
  366. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  367. ;        CB0B - RRC E - [n = 0, h = 0, c = x, z = x]
  368. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  369.  
  370. z80_optc_CB0B:    subq.l    #2,a5
  371.         ror.b    #1,d0
  372.         move.w    CCR,d4
  373.  
  374.         fetch_next_i
  375.         cnop    0,128
  376.  
  377. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  378. ;        0C - INC C - [n = 0, h = x, c = c, z = x]
  379. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  380.  
  381. z80_optcode_0C:    subq.l    #1,a5
  382.  
  383.         addq.b    #1,d1
  384.         beq.s    z80_optcode_0C_z
  385.  
  386.         and.b    #%1,d4
  387.  
  388.         fetch_next_i
  389.         cnop    0,4
  390.  
  391. z80_optcode_0C_z:
  392.         or.b    #%100,d4                ;z = 1.
  393.  
  394.         fetch_next_i
  395.         cnop    0,128
  396.  
  397. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  398. ;        CB0C - RRC H - [n = 0, h = 0, c = x, z = x]
  399. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  400.  
  401. z80_optc_CB0C:    ror.w    #8,d2
  402.         subq.l    #2,a5
  403.         ror.b    #1,d2
  404.         move.w    CCR,d4
  405.         rol.w    #8,d2
  406.  
  407.         fetch_next_i
  408.         cnop    0,128
  409.  
  410. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  411. ;        0D - DEC C - [n = 1, h = x, c = c, z = x]
  412. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  413.  
  414. z80_optcode_0D:    subq.l    #1,a5
  415.  
  416.         subq.b    #1,d1
  417.         beq.s    z80_optcode_0D_z
  418.  
  419.         and.b    #%1,d4                    ;z = 0.
  420.  
  421.         fetch_next_i
  422.         cnop    0,4
  423.  
  424. z80_optcode_0D_z:
  425.         or.b    #%100,d4                ;z = 1.
  426.  
  427.         fetch_next_i
  428.         cnop    0,128
  429.  
  430. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  431. ;        CB0D - RRC L - [n = 0, h = 0, c = x, z = x]
  432. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  433.  
  434. z80_optc_CB0D:    subq.l    #2,a5
  435.         ror.b    #1,d2
  436.         move.w    CCR,d4
  437.  
  438.         fetch_next_i
  439.         cnop    0,128
  440.  
  441. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  442. ;        0E - LD C, x
  443. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  444.  
  445. z80_optcode_0E:    subq.l    #2,a5
  446.         move.b    (a0)+,d1
  447.  
  448.         fetch_next_i
  449.         cnop    0,128
  450.  
  451. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  452. ;        CB0E - RRC (HL) - [n = 0, h = 0, c = x, z = x]
  453. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  454.  
  455. z80_optc_CB0E:    move.b    (a2,d2.l),d6
  456.         subq.l    #4,a5
  457.         ror.b    #1,d6
  458.         move.w    CCR,d4
  459.         move.b    d6,(a2,d2.l)
  460.  
  461.         fetch_next_i
  462.         cnop    0,128
  463.  
  464. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  465. ;        0F - RRCA - [n = 0, h = 0, c = x, z = 0]
  466. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  467.  
  468. z80_optcode_0F:    ror.b    #1,d3
  469.         move.w    CCR,d4
  470.         subq.l    #1,a5
  471.         and.b    #%1,d4
  472.  
  473.         fetch_next_i
  474.         cnop    0,128
  475.  
  476. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  477. ;        CB0F - RRC A - [n = 0, h = 0, c = x, z = x]
  478. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  479.  
  480. z80_optc_CB0F:    subq.l    #2,a5
  481.         ror.b    #1,d3
  482.         move.w    CCR,d4
  483.  
  484.         fetch_next_i
  485.         cnop    0,128
  486.  
  487. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  488. ;        10 - STOP (+ 00.B?)
  489. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  490.  
  491. z80_optcode_10:    move.b    #1,z80_halt                ;z80 halted!
  492.         rts
  493.         cnop    0,128
  494.  
  495. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  496. ;        CB10 - RL B - [n = 0, h = 0, c = x, z = x]
  497. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  498.  
  499. z80_optc_CB10:    subq.l    #2,a5
  500.         lsl.b    #4,d4                    ;c = mc680x0's x!
  501.         ror.w    #8,d1
  502.  
  503.         move.w    d4,CCR
  504.         roxl.b    #1,d1
  505.         move.w    CCR,d4
  506.  
  507.         rol.w    #8,d1
  508.  
  509.         fetch_next_i
  510.         cnop    0,128
  511.  
  512. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  513. ;        11 - LD DE, xx
  514. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  515.  
  516. z80_optcode_11:    move.w    (a0)+,d0
  517.         subq.l    #3,a5
  518.         ror.w    #8,d0
  519.  
  520.         fetch_next_i
  521.         cnop    0,128
  522.  
  523. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  524. ;        CB11 - RL C - [n = 0, h = 0, c = x, z = x]
  525. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  526.  
  527. z80_optc_CB11:    lsl.b    #4,d4                    ;c = mc680x0's x!
  528.         subq.l    #2,a5
  529.         move.w    d4,CCR
  530.         roxl.b    #1,d1
  531.         move.w    CCR,d4
  532.  
  533.         fetch_next_i
  534.         cnop    0,128
  535.  
  536. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  537. ;        12 - LD (DE), A
  538. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  539.  
  540. z80_optcode_12:    move.l    gb_mem_jumps,a6
  541.         subq.l    #2,a5
  542.         move.w    d0,d7
  543.         move.b    d3,d6
  544.         jsr    ([a6,d0.l*4])
  545.  
  546.         fetch_next_i
  547.         cnop    0,128
  548.  
  549. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  550. ;        CB12 - RL D - [n = 0, h = 0, c = x, z = x]
  551. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  552.  
  553. z80_optc_CB12:    subq.l    #2,a5
  554.         lsl.b    #4,d4                    ;c = mc680x0's x!
  555.         ror.w    #8,d0
  556.  
  557.         move.w    d4,CCR
  558.         roxl.b    #1,d0
  559.         move.w    CCR,d4
  560.  
  561.         rol.w    #8,d0
  562.  
  563.         fetch_next_i
  564.         cnop    0,128
  565.  
  566. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  567. ;        13 - INC DE
  568. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  569.  
  570. z80_optcode_13:    subq.l    #2,a5
  571.         addq.w    #1,d0
  572.  
  573.         fetch_next_i
  574.         cnop    0,128
  575.  
  576. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  577. ;        CB13 - RL E - [n = 0, h = 0, c = x, z = x]
  578. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  579.  
  580. z80_optc_CB13:    lsl.b    #4,d4                    ;c = mc680x0's x!
  581.         subq.l    #2,a5
  582.         move.w    d4,CCR
  583.         roxl.b    #1,d0
  584.         move.w    CCR,d4
  585.  
  586.         fetch_next_i
  587.         cnop    0,128
  588.  
  589. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  590. ;        14 - INC D - [n = 0, h = x, c = c, z = x]
  591. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  592.  
  593. z80_optcode_14:    ror.w    #8,d0
  594.         subq.l    #1,a5
  595.  
  596.         addq.b    #1,d0
  597.         beq.s    z80_optcode_14_z
  598.  
  599.         and.b    #%1,d4                    ;z = 0.
  600.         rol.w    #8,d0
  601.  
  602.         fetch_next_i
  603.         cnop    0,4
  604.  
  605. z80_optcode_14_z:
  606.         or.b    #%100,d4                ;z = 1.
  607.         rol.w    #8,d0
  608.  
  609.         fetch_next_i
  610.         cnop    0,128
  611.  
  612. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  613. ;        CB14 - RL H - [n = 0, h = 0, c = x, z = x]
  614. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  615.  
  616. z80_optc_CB14:    subq.l    #2,a5
  617.         lsl.b    #4,d4                    ;c = mc680x0's x!
  618.         ror.w    #8,d2
  619.  
  620.         move.w    d4,CCR
  621.         roxl.b    #1,d2
  622.         move.w    CCR,d4
  623.  
  624.         rol.w    #8,d2
  625.  
  626.         fetch_next_i
  627.         cnop    0,128
  628.  
  629. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  630. ;        15 - DEC D - [n = 1, h = x, c = c, z = x]
  631. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  632.  
  633. z80_optcode_15:    ror.w    #8,d0
  634.         subq.l    #1,a5
  635.  
  636.         subq.b    #1,d0
  637.         beq.s    z80_optcode_15_z
  638.  
  639.         and.b    #%1,d4                    ;z = 0.
  640.         rol.w    #8,d0
  641.  
  642.         fetch_next_i
  643.         cnop    0,4
  644.  
  645. z80_optcode_15_z:
  646.         or.b    #%100,d4                ;z = 1.
  647.         rol.w    #8,d0
  648.  
  649.         fetch_next_i
  650.         cnop    0,128
  651.  
  652. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  653. ;        CB15 - RL L - [n = 0, h = 0, c = x, z = x]
  654. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  655.  
  656. z80_optc_CB15:    lsl.b    #4,d4                    ;c = mc680x0's x!
  657.         subq.l    #2,a5
  658.         move.w    d4,CCR
  659.         roxl.b    #1,d2
  660.         move.w    CCR,d4
  661.  
  662.         fetch_next_i
  663.         cnop    0,128
  664.  
  665. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  666. ;        16 - LD D, x
  667. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  668.  
  669. z80_optcode_16:    ror.w    #8,d0
  670.         subq.l    #2,a5
  671.         move.b    (a0)+,d0
  672.         rol.w    #8,d0
  673.  
  674.         fetch_next_i
  675.         cnop    0,128
  676.  
  677. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  678. ;        CB16 - RL (HL) - [n = 0, h = 0, c = x, z = x]
  679. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  680.  
  681. z80_optc_CB16:    subq.l    #4,a5
  682.         lsl.b    #4,d4                    ;c = mc680x0's x!
  683.         move.b    (a2,d2.l),d6
  684.  
  685.         move.w    d4,CCR
  686.         roxl.b    #1,d6
  687.         move.w    CCR,d4
  688.  
  689.         move.b    d6,(a2,d2.l)
  690.  
  691.         fetch_next_i
  692.         cnop    0,128
  693.  
  694. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  695. ;        17 - RLA - [n = 0, h = 0, c = x, z = 0]
  696. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  697.  
  698. z80_optcode_17:    lsl.b    #4,d4
  699.         subq.l    #1,a5
  700.  
  701.         move.w    d4,CCR
  702.         roxl.b    #1,d3
  703.         move.w    CCR,d4
  704.  
  705.         and.b    #%1,d4
  706.  
  707.         fetch_next_i
  708.         cnop    0,128
  709.  
  710. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  711. ;        CB17 - RL A - [n = 0, h = 0, c = x, z = x]
  712. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  713.  
  714. z80_optc_CB17:    lsl.b    #4,d4                    ;c = mc680x0's x!
  715.         subq.l    #2,a5
  716.         move.w    d4,CCR
  717.         roxl.b    #1,d3
  718.         move.w    CCR,d4
  719.  
  720.         fetch_next_i
  721.         cnop    0,128
  722.  
  723. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  724. ;        18 - JR x
  725. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  726.  
  727. z80_optcode_18:    move.b    (a0)+,d7
  728.         ext.w    d7
  729.         subq.l    #2,a5
  730.         adda.w    d7,a0
  731.  
  732.         fetch_next_i
  733.         cnop    0,128
  734.  
  735. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  736. ;        CB18 - RR B - [n = 0, h = 0, c = x, z = x]
  737. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  738.  
  739. z80_optc_CB18:    subq.l    #2,a5
  740.         lsl.b    #4,d4                    ;c = mc680x0's x!
  741.         ror.w    #8,d1
  742.  
  743.         move.w    d4,CCR
  744.         roxr.b    #1,d1
  745.         move.w    CCR,d4
  746.  
  747.         rol.w    #8,d1
  748.  
  749.         fetch_next_i
  750.         cnop    0,128
  751.  
  752. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  753. ;        19 - ADD HL, DE - [n = 0, h = ?, c = x, z = z]
  754. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  755.  
  756. z80_optcode_19:    add.w    d0,d2
  757.         move.w    CCR,d7
  758.         and.b    #%11111110,d4
  759.         and.b    #%1,d7
  760.         subq.l    #2,a5
  761.         or.b    d7,d4
  762.  
  763.         fetch_next_i
  764.         cnop    0,128
  765.  
  766. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  767. ;        CB19 - RR C - [n = 0, h = 0, c = x, z = x]
  768. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  769.  
  770. z80_optc_CB19:    lsl.b    #4,d4                    ;c = mc680x0's x!
  771.         subq.l    #2,a5
  772.         move.w    d4,CCR
  773.         roxr.b    #1,d1
  774.         move.w    CCR,d4
  775.  
  776.         fetch_next_i
  777.         cnop    0,128
  778.  
  779. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  780. ;        1A - LD A, (DE)
  781. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  782.  
  783. z80_optcode_1A:    subq.l    #2,a5
  784.  
  785.         tst.w    d0
  786.         blt.s    read_d0x_to_d3a
  787.  
  788.         move.b    (a3,d0.l),d3                ;rom read.
  789.  
  790.         fetch_next_i
  791.         cnop    0,4
  792.  
  793. read_d0x_to_d3a:move.b    (a2,d0.l),d3                ;ram read.
  794.  
  795.         fetch_next_i
  796.         cnop    0,128
  797.  
  798. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  799. ;        CB1A - RR D - [n = 0, h = 0, c = x, z = x]
  800. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  801.  
  802. z80_optc_CB1A:    subq.l    #2,a5
  803.         lsl.b    #4,d4                    ;c = mc680x0's x!
  804.         ror.w    #8,d0
  805.  
  806.         move.w    d4,CCR
  807.         roxr.b    #1,d0
  808.         move.w    CCR,d4
  809.  
  810.         rol.w    #8,d0
  811.  
  812.         fetch_next_i
  813.         cnop    0,128
  814.  
  815. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  816. ;        1B - DEC DE
  817. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  818.  
  819. z80_optcode_1B:    subq.l    #2,a5
  820.         subq.w    #1,d0
  821.  
  822.         fetch_next_i
  823.         cnop    0,128
  824.  
  825. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  826. ;        CB1B - RR E - [n = 0, h = 0, c = x, z = x]
  827. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  828.  
  829. z80_optc_CB1B:    lsl.b    #4,d4                    ;c = mc680x0's x!
  830.         subq.l    #2,a5
  831.         move.w    d4,CCR
  832.         roxr.b    #1,d0
  833.         move.w    CCR,d4
  834.  
  835.         fetch_next_i
  836.         cnop    0,128
  837.  
  838. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  839. ;        1C - INC E - [n = 0, h = x, c = c, z = x]
  840. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  841.  
  842. z80_optcode_1C:    subq.l    #1,a5
  843.  
  844.         addq.b    #1,d0
  845.         beq.s    z80_optcode_1C_z
  846.  
  847.         and.b    #1,d4                    ;z = 0.
  848.  
  849.         fetch_next_i
  850.         cnop    0,4
  851.  
  852. z80_optcode_1C_z:
  853.         or.b    #%100,d4                ;z = 1.
  854.  
  855.         fetch_next_i
  856.         cnop    0,128
  857.  
  858. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  859. ;        CB1C - RR H - [n = 0, h = 0, c = x, z = x]
  860. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  861.  
  862. z80_optc_CB1C:    subq.l    #2,a5
  863.         lsl.b    #4,d4                    ;c = mc680x0's x!
  864.         ror.w    #8,d2
  865.  
  866.         move.w    d4,CCR
  867.         roxr.b    #1,d2
  868.         move.w    CCR,d4
  869.  
  870.         rol.w    #8,d2
  871.  
  872.         fetch_next_i
  873.         cnop    0,128
  874.  
  875. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  876. ;        1D - DEC E - [n = 1, h = x, c = c, z = x]
  877. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  878.  
  879. z80_optcode_1D:    subq.l    #1,a5
  880.  
  881.         subq.b    #1,d0
  882.         beq.s    z80_optcode_1D_z
  883.  
  884.         and.b    #%1,d4                    ;z = 0.
  885.  
  886.         fetch_next_i
  887.         cnop    0,4
  888.  
  889. z80_optcode_1D_z:
  890.         or.b    #%100,d4                ;z = 1.
  891.  
  892.         fetch_next_i
  893.         cnop    0,128
  894.  
  895. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  896. ;        CB1D - RR L - [n = 0, h = 0, c = x, z = x]
  897. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  898.  
  899. z80_optc_CB1D:    lsl.b    #4,d4                    ;c = mc680x0's x!
  900.         subq.l    #2,a5
  901.  
  902.         move.w    d4,CCR
  903.         roxr.b    #1,d2
  904.         move.w    CCR,d4
  905.  
  906.         fetch_next_i
  907.         cnop    0,128
  908.  
  909. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  910. ;        1E - LD E, x
  911. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  912.  
  913. z80_optcode_1E:    subq.l    #2,a5
  914.         move.b    (a0)+,d0
  915.  
  916.         fetch_next_i
  917.         cnop    0,128
  918.  
  919. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  920. ;        CB1E - RR (HL) - [n = 0, h = 0, c = x, z = x]
  921. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  922.  
  923. z80_optc_CB1E:    subq.l    #4,a5
  924.         lsl.b    #4,d4                    ;c = mc680x0's x!
  925.         move.b    (a2,d2.l),d6
  926.  
  927.         move.w    d4,CCR
  928.         roxr.b    #1,d6
  929.         move.w    CCR,d4
  930.  
  931.         move.b    d6,(a2,d2.l)
  932.  
  933.         fetch_next_i
  934.         cnop    0,128
  935.  
  936. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  937. ;        1F - RRA - [n = 0, h = 0, c = x, z = 0]
  938. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  939.  
  940. z80_optcode_1F:    lsl.b    #4,d4                    ;c = mc680x0's x!
  941.         subq.l    #1,a5
  942.  
  943.         move.w    d4,CCR
  944.         roxr.b    #1,d3
  945.         move.w    CCR,d4
  946.  
  947.         and.b    #%1,d4
  948.  
  949.         fetch_next_i
  950.         cnop    0,128
  951.  
  952. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  953. ;        CB1F - RR A - [n = 0, h = 0, c = x, z = x]
  954. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  955.  
  956. z80_optc_CB1F:    lsl.b    #4,d4                    ;c = mc680x0's x!
  957.         subq.l    #2,a5
  958.  
  959.         move.w    d4,CCR
  960.         roxr.b    #1,d3
  961.         move.w    CCR,d4
  962.  
  963.         fetch_next_i
  964.         cnop    0,128
  965.  
  966. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  967. ;        20 - JR NZ, x
  968. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  969.  
  970. z80_optcode_20:    subq.l    #2,a5
  971.  
  972.         btst    #2,d4                    ;z - flag set?
  973.         bne.s    z80_optcode_20x                ;yes. it's zero.
  974.  
  975.         move.b    (a0)+,d7
  976.         ext.w    d7                    ;.B -> .W.
  977.         adda.w    d7,a0                    ;pc updated.
  978.  
  979.         fetch_next_i
  980.         cnop    0,4
  981.  
  982. z80_optcode_20x:addq.l    #1,a0                    ;no jump.
  983.  
  984.         fetch_next_i
  985.         cnop    0,128
  986.  
  987. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  988. ;        CB20 - SLA B - [n = 0, h = 0, c = x, z = x]
  989. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  990.  
  991. z80_optc_CB20:    ror.w    #8,d1
  992.         subq.l    #2,a5                    ;less cycles.
  993.         asl.b    #1,d1
  994.         move.w    CCR,d4                    ;status updated.
  995.         rol.w    #8,d1
  996.  
  997.         fetch_next_i
  998.         cnop    0,128
  999.  
  1000. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1001. ;        21 - LD HL, xx
  1002. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1003.  
  1004. z80_optcode_21:    move.w    (a0)+,d2
  1005.         subq.l    #3,a5                    ;less cycles.
  1006.         ror.w    #8,d2
  1007.  
  1008.         fetch_next_i
  1009.         cnop    0,128
  1010.  
  1011. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1012. ;        CB21 - SLA C - [n = 0, h = 0, c = x, z = x]
  1013. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1014.  
  1015. z80_optc_CB21:    subq.l    #2,a5                    ;less cycles.
  1016.         asl.b    #1,d1
  1017.         move.w    CCR,d4                    ;status updated.
  1018.  
  1019.         fetch_next_i
  1020.         cnop    0,128
  1021.  
  1022. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1023. ;        22 - LDI (HL), A
  1024. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1025.  
  1026. z80_optcode_22:    move.b    d3,(a2,d2.l)
  1027.         subq.l    #2,a5                    ;less cycles.
  1028.         addq.w    #1,d2                    ;ldi to hl.
  1029.  
  1030.         fetch_next_i
  1031.         cnop    0,128
  1032.  
  1033. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1034. ;        CB22 - SLA D - [n = 0, h = 0, c = x, z = x]
  1035. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1036.  
  1037. z80_optc_CB22:    ror.w    #8,d0                    ;d down.
  1038.         subq.l    #2,a5                    ;less cycles.
  1039.         asl.b    #1,d0
  1040.         move.w    CCR,d4                    ;status updated.
  1041.         rol.w    #8,d0                    ;d back to up.
  1042.  
  1043.         fetch_next_i
  1044.         cnop    0,128
  1045.  
  1046. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1047. ;        23 - INC HL
  1048. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1049.  
  1050. z80_optcode_23:    subq.l    #2,a5                    ;less cycles.
  1051.         addq.w    #1,d2                    ;hl = hl + 1.
  1052.  
  1053.         fetch_next_i
  1054.         cnop    0,128
  1055.  
  1056. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1057. ;        CB23 - SLA E - [n = 0, h = 0, c = x, z = x]
  1058. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1059.  
  1060. z80_optc_CB23:    subq.l    #2,a5                    ;less cycles.
  1061.         asl.b    #1,d0
  1062.         move.w    CCR,d4                    ;status updated.
  1063.  
  1064.         fetch_next_i
  1065.         cnop    0,128
  1066.  
  1067. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1068. ;        24 - INC H - [n = 0, h = x, c = c, z = x]
  1069. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1070.  
  1071. z80_optcode_24:    ror.w    #8,d2                    ;h down.
  1072.         subq.l    #1,a5                    ;less cycles.
  1073.  
  1074.         addq.b    #1,d2                    ;h = h + 1.
  1075.         beq.s    z80_optcode_24_z
  1076.  
  1077.         and.b    #%1,d4                    ;z = 0.
  1078.         rol.w    #8,d2
  1079.  
  1080.         fetch_next_i
  1081.         cnop    0,4
  1082.  
  1083. z80_optcode_24_z:
  1084.         or.b    #%100,d4                ;z = 1.
  1085.         rol.w    #8,d2
  1086.  
  1087.         fetch_next_i
  1088.         cnop    0,128
  1089.  
  1090. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1091. ;        CB24 - SLA H - [n = 0, h = 0, c = x, z = x]
  1092. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1093.  
  1094. z80_optc_CB24:    ror.w    #8,d2
  1095.         subq.l    #2,a5
  1096.         asl.b    #1,d2
  1097.         move.w    CCR,d4
  1098.         rol.w    #8,d2
  1099.  
  1100.         fetch_next_i
  1101.         cnop    0,128
  1102.  
  1103. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1104. ;        25 - DEC H - [n = 1, h = x, c = c, z = x]
  1105. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1106.  
  1107. z80_optcode_25:    ror.w    #8,d2
  1108.         subq.l    #1,a5
  1109.  
  1110.         subq.b    #1,d2                    ;h = h - 1.
  1111.         beq.s    z80_optcode_25_z
  1112.  
  1113.         and.b    #%1,d4                    ;z = 0.
  1114.         rol.w    #8,d2
  1115.  
  1116.         fetch_next_i
  1117.         cnop    0,4
  1118.  
  1119. z80_optcode_25_z:
  1120.         or.b    #%100,d4                ;z = 1.
  1121.         rol.w    #8,d2
  1122.  
  1123.         fetch_next_i
  1124.         cnop    0,128
  1125.  
  1126. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1127. ;        CB25 - SLA L - [n = 0, h = 0, c = x, z = x]
  1128. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1129.  
  1130. z80_optc_CB25:    subq.l    #2,a5                    ;less cycles.
  1131.         asl.b    #1,d2
  1132.         move.w    CCR,d4                    ;status updated.
  1133.  
  1134.         fetch_next_i
  1135.         cnop    0,128
  1136.  
  1137. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1138. ;        26 - LD H, x
  1139. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1140.  
  1141. z80_optcode_26:    ror.w    #8,d2                    ;h down
  1142.         subq.l    #2,a5                    ;less cycles.
  1143.         move.b    (a0)+,d2
  1144.         rol.w    #8,d2                    ;h back to up.
  1145.  
  1146.         fetch_next_i
  1147.         cnop    0,128
  1148.  
  1149. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1150. ;        CB26 - SLA (HL) - [n = 0, h = 0, c = x, z = x]
  1151. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1152.  
  1153. z80_optc_CB26:    move.b    (a2,d2.l),d6
  1154.         subq.l    #4,a5                    ;less cycles.
  1155.  
  1156.         asl.b    #1,d6
  1157.         move.w    CCR,d4                    ;status updated.
  1158.  
  1159.         move.b    d6,(a2,d2.l)
  1160.  
  1161.         fetch_next_i
  1162.         cnop    0,128
  1163.  
  1164. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1165. ;        27 - DAA - [n = n, h = 0, c = x, z = x]
  1166. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1167.  
  1168. z80_optcode_27:    subq.l    #1,a5                    ;less cycles.
  1169.  
  1170.         fetch_next_i
  1171.         cnop    0,128
  1172.  
  1173. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1174. ;        CB27 - SLA A - [n = 0, h = 0, c = x, z = x]
  1175. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1176.  
  1177. z80_optc_CB27:    subq.l    #2,a5                    ;less cycles.
  1178.         asl.b    #1,d3
  1179.         move.w    CCR,d4                    ;status updated.
  1180.  
  1181.         fetch_next_i
  1182.         cnop    0,128
  1183.  
  1184. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1185. ;        28 - JR Z, x
  1186. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1187.  
  1188. z80_optcode_28:    subq.l    #2,a5
  1189.  
  1190.         btst    #2,d4                    ;z - flag set?
  1191.         beq.s    z80_optcode_28x                ;nope. it's non-zero.
  1192.  
  1193.         move.b    (a0)+,d7
  1194.         ext.w    d7                    ;.B -> .W.
  1195.         adda.w    d7,a0                    ;pc updated.
  1196.  
  1197.         fetch_next_i
  1198.         cnop    0,4
  1199.  
  1200. z80_optcode_28x:addq.l    #1,a0                    ;no jump.
  1201.  
  1202.         fetch_next_i
  1203.         cnop    0,128
  1204.  
  1205. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1206. ;        CB28 - SRA B - [n = 0, h = 0, c = x, z = x]
  1207. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1208.  
  1209. z80_optc_CB28:    ror.w    #8,d1
  1210.         subq.l    #2,a5                    ;less cycles.
  1211.         asr.b    #1,d1
  1212.         move.w    CCR,d4                    ;status updated.
  1213.         rol.w    #8,d1
  1214.  
  1215.         fetch_next_i
  1216.         cnop    0,128
  1217.  
  1218. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1219. ;        29 - ADD HL, HL - [n = 0, h = ?, c = x, z = z]
  1220. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1221.  
  1222. z80_optcode_29:    add.w    d2,d2                    ;hl = hl + hl.
  1223.         move.w    CCR,d7                    ;status updated.
  1224.         and.b    #%11111110,d4                ;save z.
  1225.         and.b    #%1,d7                    ;save c.
  1226.         subq.l    #2,a5                    ;less cycles.
  1227.         or.b    d7,d4                    ;return z.
  1228.  
  1229.         fetch_next_i
  1230.         cnop    0,128
  1231.  
  1232. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1233. ;        CB29 - SRA C - [n = 0, h = 0, c = x, z = x]
  1234. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1235.  
  1236. z80_optc_CB29:    subq.l    #2,a5                    ;less cycles.
  1237.         asr.b    #1,d1
  1238.         move.w    CCR,d4                    ;status updated.
  1239.  
  1240.         fetch_next_i
  1241.         cnop    0,128
  1242.  
  1243. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1244. ;        2A - LDI A, (HL)
  1245. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1246.  
  1247. z80_optcode_2A:    subq.l    #2,a5                    ;less cycles.
  1248.  
  1249.         tst.w    d2                    ;rom read?
  1250.         blt.s    read_d2_to_d3a1                ;nope. from ram!
  1251.  
  1252.         move.b    (a3,d2.l),d3
  1253.         addq.w    #1,d2                    ;ldi a, (hl).
  1254.  
  1255.         fetch_next_i
  1256.  
  1257.         cnop    0,4
  1258. read_d2_to_d3a1:move.b    (a2,d2.l),d3                ;ram read.
  1259.         addq.w    #1,d2                    ;ldi a, (hl).
  1260.  
  1261.         fetch_next_i
  1262.         cnop    0,128
  1263.  
  1264. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1265. ;        CB2A - SRA D - [n = 0, h = 0, c = x, z = x]
  1266. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1267.  
  1268. z80_optc_CB2A:    ror.w    #8,d0
  1269.         subq.l    #2,a5
  1270.         asr.b    #1,d0
  1271.         move.w    CCR,d4
  1272.         rol.w    #8,d0
  1273.  
  1274.         fetch_next_i
  1275.         cnop    0,128
  1276.  
  1277. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1278. ;        2B - DEC HL
  1279. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1280.  
  1281. z80_optcode_2B:    subq.l    #2,a5
  1282.         subq.w    #1,d2
  1283.  
  1284.         fetch_next_i
  1285.         cnop    0,128
  1286.  
  1287. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1288. ;        CB2B - SRA E - [n = 0, h = 0, c = x, z = x]
  1289. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1290.  
  1291. z80_optc_CB2B:    subq.l    #2,a5
  1292.         asr.b    #1,d0
  1293.         move.w    CCR,d4
  1294.  
  1295.         fetch_next_i
  1296.         cnop    0,128
  1297.  
  1298. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1299. ;        2C - INC L - [n = 0, h = x, c = c, z = x]
  1300. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1301.  
  1302. z80_optcode_2C:    subq.l    #1,a5
  1303.  
  1304.         addq.b    #1,d2
  1305.         beq.s    z80_optcode_2C_z
  1306.  
  1307.         and.b    #%1,d4                    ;z = 0.
  1308.  
  1309.         fetch_next_i
  1310.         cnop    0,4
  1311.  
  1312. z80_optcode_2C_z:
  1313.         or.b    #%100,d4                ;z = 1.
  1314.  
  1315.         fetch_next_i
  1316.         cnop    0,128
  1317.  
  1318. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1319. ;        CB2C - SRA H - [n = 0, h = 0, c = x, z = x]
  1320. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1321.  
  1322. z80_optc_CB2C:    ror.w    #8,d2
  1323.         subq.l    #2,a5
  1324.         asr.b    #1,d2
  1325.         move.w    CCR,d4
  1326.         rol.w    #8,d2
  1327.  
  1328.         fetch_next_i
  1329.         cnop    0,128
  1330.  
  1331. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1332. ;        2D - DEC L - [n = 1, h = x, c = c, z = x]
  1333. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1334.  
  1335. z80_optcode_2D:    subq.l    #1,a5
  1336.  
  1337.         subq.b    #1,d2
  1338.         beq.s    z80_optcode_2D_z
  1339.  
  1340.         and.b    #%1,d4                    ;z = 0.
  1341.  
  1342.         fetch_next_i
  1343.         cnop    0,4
  1344.  
  1345. z80_optcode_2D_z:
  1346.         or.b    #%100,d4                ;z = 1.
  1347.  
  1348.         fetch_next_i
  1349.         cnop    0,128
  1350.  
  1351. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1352. ;        CB2D - SRA L - [n = 0, h = 0, c = x, z = x]
  1353. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1354.  
  1355. z80_optc_CB2D:    subq.l    #2,a5
  1356.         asr.b    #1,d2
  1357.         move.w    CCR,d4
  1358.  
  1359.         fetch_next_i
  1360.         cnop    0,128
  1361.  
  1362. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1363. ;        2E - LD L, x
  1364. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1365.  
  1366. z80_optcode_2E:    subq.l    #2,a5
  1367.         move.b    (a0)+,d2
  1368.  
  1369.         fetch_next_i
  1370.         cnop    0,128
  1371.  
  1372. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1373. ;        CB2E - SRA (HL) - [n = 0, h = 0, c = x, z = x]
  1374. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1375.  
  1376. z80_optc_CB2E:    move.b    (a2,d2.l),d6
  1377.         subq.l    #4,a5
  1378.         asr.b    #1,d6
  1379.         move.w    CCR,d4
  1380.         move.b    d6,(a2,d2.l)
  1381.  
  1382.         fetch_next_i
  1383.         cnop    0,128
  1384.  
  1385. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1386. ;        2F - CPL - [n = 1, h = 1, c = c, z = z]
  1387. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1388.  
  1389. z80_optcode_2F:    subq.l    #1,a5
  1390.         eor.b    #$ff,d3
  1391.  
  1392.         fetch_next_i
  1393.         cnop    0,128
  1394.  
  1395. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1396. ;        CB2F - SRA A - [n = 0, h = 0, c = x, z = x]
  1397. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1398.  
  1399. z80_optc_CB2F:    subq.l    #2,a5
  1400.         asr.b    #1,d3
  1401.         move.w    CCR,d4
  1402.  
  1403.         fetch_next_i
  1404.         cnop    0,128
  1405.  
  1406. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1407. ;        30 - JR NC, x
  1408. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1409.  
  1410. z80_optcode_30:    subq.l    #2,a5
  1411.  
  1412.         btst    #0,d4                    ;c - flag set?
  1413.         bne.s    z80_optcode_30x                ;yes. no jump.
  1414.  
  1415.         move.b    (a0)+,d7
  1416.         ext.w    d7                    ;.B -> .W.
  1417.         adda.w    d7,a0                    ;pc updated.
  1418.  
  1419.         fetch_next_i
  1420.         cnop    0,4
  1421.  
  1422. z80_optcode_30x:addq.l    #1,a0                    ;skip jump.
  1423.  
  1424.         fetch_next_i
  1425.         cnop    0,128
  1426.  
  1427. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1428. ;        CB30 - SWAP B - [n = 0, h = 0, c = 0, z = x]
  1429. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1430.  
  1431. z80_optc_CB30:    ror.w    #8,d1                    ;b down.
  1432.         subq.l    #2,a5                    ;less cycles.
  1433.         ror.b    #4,d1                    ;swap nibbles.
  1434.         move.w    CCR,d4
  1435.         rol.w    #8,d1                    ;b back up.
  1436.         and.b    #%100,d4
  1437.  
  1438.         fetch_next_i
  1439.         cnop    0,128
  1440.  
  1441. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1442. ;        31 - LD SP, xx
  1443. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1444.  
  1445. z80_optcode_31:    move.w    (a0)+,d5
  1446.         subq.l    #3,a5
  1447.         ror.w    #8,d5
  1448.  
  1449.         fetch_next_i
  1450.         cnop    0,128
  1451.  
  1452. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1453. ;        CB31 - SWAP C - [n = 0, h = 0, c = 0, z = x]
  1454. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1455.  
  1456. z80_optc_CB31:    ror.b    #4,d1                    ;swap nibbles.
  1457.         move.w    CCR,d4
  1458.         subq.l    #2,a5
  1459.         and.b    #%100,d4
  1460.  
  1461.         fetch_next_i
  1462.         cnop    0,128
  1463.  
  1464. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1465. ;        32 - LDD (HL), A
  1466. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1467.  
  1468. z80_optcode_32:    move.b    d3,(a2,d2.l)
  1469.         subq.l    #2,a5
  1470.         subq.w    #1,d2
  1471.  
  1472.         fetch_next_i
  1473.         cnop    0,128
  1474.  
  1475. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1476. ;        CB32 - SWAP D - [n = 0, h = 0, c = 0, z = x]
  1477. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1478.  
  1479. z80_optc_CB32:    ror.w    #8,d0                    ;d down.
  1480.         subq.l    #2,a5                    ;less cycles.
  1481.         ror.b    #4,d0                    ;swap nibbles.
  1482.         move.w    CCR,d4
  1483.         rol.w    #8,d0                    ;d back up.
  1484.         and.b    #%100,d4
  1485.  
  1486.         fetch_next_i
  1487.         cnop    0,128
  1488.  
  1489. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1490. ;        33 - INC SP
  1491. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1492.  
  1493. z80_optcode_33:    subq.l    #2,a5
  1494.         addq.w    #1,d5                    ;sp = sp + 1.
  1495.  
  1496.         fetch_next_i
  1497.         cnop    0,128
  1498.  
  1499. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1500. ;        CB33 - SWAP E - [n = 0, h = 0, c = 0, z = x]
  1501. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1502.  
  1503. z80_optc_CB33:    ror.b    #4,d0                    ;swap nibbles.
  1504.         move.w    CCR,d4
  1505.         subq.l    #2,a5
  1506.         and.b    #%100,d4
  1507.  
  1508.         fetch_next_i
  1509.         cnop    0,128
  1510.  
  1511. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1512. ;        34 - INC (HL) - [n = 0, h = x, c = c, z = x]
  1513. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1514.  
  1515. z80_optcode_34:    addq.b    #1,(a2,d2.l)
  1516.         move.w    CCR,d7                    ;status updated.
  1517.         and.b    #%1,d4                    ;save carry.
  1518.         and.b    #%11111110,d7                ;c = 0.
  1519.         subq.l    #3,a5
  1520.         or.b    d7,d4
  1521.  
  1522.         fetch_next_i
  1523.         cnop    0,128
  1524.  
  1525. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1526. ;        CB34 - SWAP H - [n = 0, h = 0, c = 0, z = x]
  1527. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1528.  
  1529. z80_optc_CB34:    ror.w    #8,d2                    ;h down.
  1530.         subq.l    #2,a5
  1531.         ror.b    #4,d2
  1532.         move.w    CCR,d4
  1533.         rol.w    #8,d2                    ;h back up.
  1534.         and.b    #%100,d4
  1535.  
  1536.         fetch_next_i
  1537.         cnop    0,128
  1538.  
  1539. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1540. ;        35 - DEC (HL) - [n = 1, h = x, c = c, z = x]
  1541. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1542.  
  1543. z80_optcode_35:    subq.b    #1,(a2,d2.l)
  1544.         move.w    CCR,d7
  1545.         and.b    #%1,d4
  1546.         and.b    #%11111110,d7
  1547.         subq.l    #3,a5
  1548.         or.b    d7,d4
  1549.  
  1550.         fetch_next_i
  1551.         cnop    0,128
  1552.  
  1553. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1554. ;        CB35 - SWAP L - [n = 0, h = 0, c = 0, z = x]
  1555. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1556.  
  1557. z80_optc_CB35:    ror.b    #4,d2                    ;swap nibbles.
  1558.         move.w    CCR,d4
  1559.         subq.l    #2,a5
  1560.         and.b    #%100,d4
  1561.  
  1562.         fetch_next_i
  1563.         cnop    0,128
  1564.  
  1565. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1566. ;        36 - LD (HL), x
  1567. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1568.  
  1569. z80_optcode_36:    subq.l    #3,a5
  1570.         move.b    (a0)+,d6
  1571.         move.l    gb_mem_jumps,a6
  1572.         move.w    d2,d7                    ;d7 = a (hl) - write.
  1573.         jsr    ([a6,d2.l*4])                ;memory write.
  1574.  
  1575.         fetch_next_i
  1576.         cnop    0,128
  1577.  
  1578. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1579. ;        CB36 - SWAP (HL) - [n = 0, h = 0, c = 0, z = x]
  1580. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1581.  
  1582. z80_optc_CB36:    move.b    (a2,d2.l),d6
  1583.         subq.l    #4,a5                    ;less cycles.
  1584.         ror.b    #4,d6                    ;swap nibbles.
  1585.         move.w    CCR,d4
  1586.         move.b    d6,(a2,d2.l)
  1587.         and.b    #%100,d4
  1588.  
  1589.         fetch_next_i
  1590.         cnop    0,128
  1591.  
  1592. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1593. ;        37 - SCF - [n = 0, h = 0, c = 1, z = z]
  1594. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1595.  
  1596. z80_optcode_37:    subq.l    #1,a5                    ;less cycles.
  1597.         or.b    #%00000001,d4                ;set carry flag.
  1598.  
  1599.         fetch_next_i
  1600.         cnop    0,128
  1601.  
  1602. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1603. ;        CB37 - SWAP A - [n = 0, h = 0, c = 0, z = x]
  1604. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1605.  
  1606. z80_optc_CB37:    ror.b    #4,d3                    ;swap nibbles.
  1607.         move.w    CCR,d4
  1608.         subq.l    #2,a5
  1609.         and.b    #%100,d4
  1610.  
  1611.         fetch_next_i
  1612.         cnop    0,128
  1613.  
  1614. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1615. ;        38 - JR C, x
  1616. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1617.  
  1618. z80_optcode_38:    subq.l    #2,a5
  1619.  
  1620.         btst    #0,d4                    ;c - flag set?
  1621.         beq.s    z80_optcode_38x                ;no. no jump.
  1622.  
  1623.         move.b    (a0)+,d7
  1624.         ext.w    d7                    ;.B -> .W.
  1625.         adda.w    d7,a0                    ;pc updated.
  1626.  
  1627.         fetch_next_i
  1628.         cnop    0,4
  1629.  
  1630. z80_optcode_38x:addq.l    #1,a0                    ;skip jump.
  1631.  
  1632.         fetch_next_i
  1633.         cnop    0,128
  1634.  
  1635. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1636. ;        CB38 - SRL B - [n = 0, h = 0, c = x, z = x]
  1637. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1638.  
  1639. z80_optc_CB38:    ror.w    #8,d1
  1640.         subq.l    #2,a5
  1641.         lsr.b    #1,d1
  1642.         move.w    CCR,d4
  1643.         rol.w    #8,d1
  1644.  
  1645.         fetch_next_i
  1646.         cnop    0,128
  1647.  
  1648. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1649. ;        39 - ADD HL, SP - [n = 0, h = ?, c = x, z = z]
  1650. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1651.  
  1652. z80_optcode_39:    add.w    d5,d2                    ;hl = hl + sp.
  1653.         move.w    CCR,d7                    ;status updated.
  1654.         and.b    #%11111110,d4                ;save z.
  1655.         and.b    #%1,d7                    ;save carry.
  1656.         subq.l    #2,a5                    ;less cycles.
  1657.         or.b    d7,d4                    ;return z.
  1658.  
  1659.         fetch_next_i
  1660.         cnop    0,128
  1661.  
  1662. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1663. ;        CB39 - SRL C - [n = 0, h = 0, c = x, z = x]
  1664. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1665.  
  1666. z80_optc_CB39:    subq.l    #2,a5
  1667.         lsr.b    #1,d1
  1668.         move.w    CCR,d4
  1669.  
  1670.         fetch_next_i
  1671.         cnop    0,128
  1672.  
  1673. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1674. ;        3A - LDD A, (HL)
  1675. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1676.  
  1677. z80_optcode_3A:    subq.l    #2,a5                    ;less cycles.
  1678.  
  1679.         tst.w    d2                    ;rom read?
  1680.         blt.s    read_d2_to_d3a2                ;nope. from ram!
  1681.  
  1682.         move.b    (a3,d2.l),d3
  1683.         subq.w    #1,d2                    ;ldd a, (hl).
  1684.  
  1685.         fetch_next_i
  1686.  
  1687.         cnop    0,4
  1688. read_d2_to_d3a2:move.b    (a2,d2.l),d3                ;ram read.
  1689.         subq.w    #1,d2                    ;ldd a, (hl).
  1690.  
  1691.         fetch_next_i
  1692.         cnop    0,128
  1693.  
  1694. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1695. ;        CB3A - SRL D - [n = 0, h = 0, c = x, z = x]
  1696. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1697.  
  1698. z80_optc_CB3A:    ror.w    #8,d0
  1699.         subq.l    #2,a5
  1700.         lsr.b    #1,d0
  1701.         move.w    CCR,d4
  1702.         rol.w    #8,d0
  1703.  
  1704.         fetch_next_i
  1705.         cnop    0,128
  1706.  
  1707. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1708. ;        3B - DEC SP
  1709. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1710.  
  1711. z80_optcode_3B:    subq.l    #2,a5
  1712.         subq.w    #1,d5
  1713.  
  1714.         fetch_next_i
  1715.         cnop    0,128
  1716.  
  1717. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1718. ;        CB3B - SRL E - [n = 0, h = 0, c = x, z = x]
  1719. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1720.  
  1721. z80_optc_CB3B:    subq.l    #2,a5
  1722.         lsr.b    #1,d0
  1723.         move.w    CCR,d4
  1724.  
  1725.         fetch_next_i
  1726.         cnop    0,128
  1727.  
  1728. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1729. ;        3C - INC A - [n = 0, h = x, c = c, z = x]
  1730. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1731.  
  1732. z80_optcode_3C:    subq.l    #1,a5
  1733.  
  1734.         addq.b    #1,d3
  1735.         beq.s    z80_optcode_3C_z
  1736.  
  1737.         and.b    #%1,d4                    ;z = 0.
  1738.  
  1739.         fetch_next_i
  1740.         cnop    0,4
  1741.  
  1742. z80_optcode_3C_z:
  1743.         or.b    #%100,d4                ;z = 1.
  1744.  
  1745.         fetch_next_i
  1746.         cnop    0,128
  1747.  
  1748. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1749. ;        CB3C - SRL H - [n = 0, h = 0, c = x, z = x]
  1750. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1751.  
  1752. z80_optc_CB3C:    ror.w    #8,d2
  1753.         subq.l    #2,a5
  1754.         lsr.b    #1,d2
  1755.         move.w    CCR,d4
  1756.         rol.w    #8,d2
  1757.  
  1758.         fetch_next_i
  1759.         cnop    0,128
  1760.  
  1761. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1762. ;        3D - DEC A - [n = 1, h = x, c = c, z = x]
  1763. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1764.  
  1765. z80_optcode_3D:    subq.l    #1,a5
  1766.  
  1767.         subq.b    #1,d3
  1768.         beq.s    z80_optcode_3D_z
  1769.  
  1770.         and.b    #%1,d4                    ;z = 0.
  1771.  
  1772.         fetch_next_i
  1773.         cnop    0,4
  1774.  
  1775. z80_optcode_3D_z:
  1776.         or.b    #%100,d4                ;z = 1.
  1777.  
  1778.         fetch_next_i
  1779.         cnop    0,128
  1780.  
  1781. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1782. ;        CB3D - SRL L - [n = 0, h = 0, c = x, z = x]
  1783. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1784.  
  1785. z80_optc_CB3D:    subq.l    #2,a5
  1786.         lsr.b    #1,d2
  1787.         move.w    CCR,d4
  1788.  
  1789.         fetch_next_i
  1790.         cnop    0,128
  1791.  
  1792. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1793. ;        3E - LD A, x
  1794. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1795.  
  1796. z80_optcode_3E:    subq.l    #2,a5
  1797.         move.b    (a0)+,d3
  1798.  
  1799.         fetch_next_i
  1800.         cnop    0,128
  1801.  
  1802. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1803. ;        CB3E - SRL (HL) - [n = 0, h = 0, c = x, z = x]
  1804. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1805.  
  1806. z80_optc_CB3E:    subq.l    #4,a5
  1807.         move.b    (a2,d2.l),d6
  1808.  
  1809.         lsr.b    #1,d6
  1810.         move.w    CCR,d4
  1811.  
  1812.         move.b    d6,(a2,d2.l)
  1813.  
  1814.         fetch_next_i
  1815.         cnop    0,128
  1816.  
  1817. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1818. ;        3F - CCF - [n = 0, h = 0, c = x, z = z]
  1819. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1820.  
  1821. z80_optcode_3F:    subq.l    #1,a5
  1822.         bchg    #0,d4
  1823.  
  1824.         fetch_next_i
  1825.         cnop    0,128
  1826.  
  1827. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1828. ;        CB3F - SRL A - [n = 0, h = 0, c = x, z = x]
  1829. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1830.  
  1831. z80_optc_CB3F:    subq.l    #2,a5
  1832.         lsr.b    #1,d3
  1833.         move.w    CCR,d4
  1834.  
  1835.         fetch_next_i
  1836.         cnop    0,128
  1837.  
  1838. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1839. ;        40 - LD B, B
  1840. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1841.  
  1842. z80_optcode_40:    subq.l    #1,a5
  1843.  
  1844.         fetch_next_i
  1845.         cnop    0,128
  1846.  
  1847. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1848. ;        CB40 - BIT 0, B - [n = 0, h = 1, c = c, z = x]
  1849. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1850.  
  1851. z80_optc_CB40:    subq.l    #2,a5                    ;less cycles.
  1852.         move.w    d4,CCR                    ;the status register.
  1853.         btst    #8,d1
  1854.         move.w    CCR,d4                    ;status updated.
  1855.  
  1856.         fetch_next_i
  1857.         cnop    0,128
  1858.  
  1859. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1860. ;        41 - LD B, C
  1861. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1862.  
  1863. z80_optcode_41:    move.b    d1,d7
  1864.         subq.l    #1,a5                    ;less cycles.
  1865.         lsl.w    #8,d1
  1866.         move.b    d7,d1
  1867.  
  1868.         fetch_next_i
  1869.         cnop    0,128
  1870.  
  1871. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1872. ;        CB41 - BIT 0, C - [n = 0, h = 1, c = c, z = x]
  1873. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1874.  
  1875. z80_optc_CB41:    subq.l    #2,a5                    ;less cycles.
  1876.         move.w    d4,CCR                    ;the status register.
  1877.         btst    #0,d1
  1878.         move.w    CCR,d4                    ;status updated.
  1879.  
  1880.         fetch_next_i
  1881.         cnop    0,128
  1882.  
  1883. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1884. ;        42 - LD B, D
  1885. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1886.  
  1887. z80_optcode_42:    move.b    d1,d7
  1888.         subq.l    #1,a5                    ;less cycles.
  1889.         move.w    d0,d1
  1890.         move.b    d7,d1
  1891.  
  1892.         fetch_next_i
  1893.         cnop    0,128
  1894.  
  1895. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1896. ;        CB42 - BIT 0, D - [n = 0, h = 1, c = c, z = x]
  1897. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1898.  
  1899. z80_optc_CB42:    subq.l    #2,a5                    ;less cycles.
  1900.         move.w    d4,CCR                    ;the status register.
  1901.         btst    #8,d0
  1902.         move.w    CCR,d4                    ;status updated.
  1903.  
  1904.         fetch_next_i
  1905.         cnop    0,128
  1906.  
  1907. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1908. ;        43 - LD B, E
  1909. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1910.  
  1911. z80_optcode_43:    ror.w    #8,d1
  1912.         subq.l    #1,a5                    ;less cycles.
  1913.         move.b    d0,d1
  1914.         rol.w    #8,d1
  1915.  
  1916.         fetch_next_i
  1917.         cnop    0,128
  1918.  
  1919. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1920. ;        CB43 - BIT 0, E - [n = 0, h = 1, c = c, z = x]
  1921. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1922.  
  1923. z80_optc_CB43:    subq.l    #2,a5                    ;less cycles.
  1924.         move.w    d4,CCR                    ;the status register.
  1925.         btst    #0,d0
  1926.         move.w    CCR,d4                    ;status updated.
  1927.  
  1928.         fetch_next_i
  1929.         cnop    0,128
  1930.  
  1931. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1932. ;        44 - LD B, H
  1933. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1934.  
  1935. z80_optcode_44:    move.b    d1,d7
  1936.         subq.l    #1,a5                    ;less cycles.
  1937.         move.w    d2,d1
  1938.         move.b    d7,d1
  1939.  
  1940.         fetch_next_i
  1941.         cnop    0,128
  1942.  
  1943. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1944. ;        CB44 - BIT 0, H - [n = 0, h = 1, c = c, z = x]
  1945. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1946.  
  1947. z80_optc_CB44:    subq.l    #2,a5                    ;less cycles.
  1948.         move.w    d4,CCR                    ;the status register.
  1949.         btst    #8,d2
  1950.         move.w    CCR,d4                    ;status updated.
  1951.  
  1952.         fetch_next_i
  1953.         cnop    0,128
  1954.  
  1955. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1956. ;        45 - LD B, L
  1957. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1958.  
  1959. z80_optcode_45:    rol.w    #8,d1
  1960.         subq.l    #1,a5                    ;less cycles.
  1961.         move.b    d2,d1
  1962.         ror.w    #8,d1
  1963.  
  1964.         fetch_next_i
  1965.         cnop    0,128
  1966.  
  1967. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1968. ;        CB45 - BIT 0, L - [n = 0, h = 1, c = c, z = x]
  1969. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1970.  
  1971. z80_optc_CB45:    subq.l    #2,a5                    ;less cycles.
  1972.         move.w    d4,CCR                    ;the status register.
  1973.         btst    #0,d2
  1974.         move.w    CCR,d4                    ;status updated.
  1975.  
  1976.         fetch_next_i
  1977.         cnop    0,128
  1978.  
  1979. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1980. ;        46 - LD B, (HL)
  1981. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  1982.  
  1983. z80_optcode_46:    ror.w    #8,d1
  1984.         subq.l    #2,a5                    ;less cycles.
  1985.  
  1986.         tst.w    d2                    ;rom read?
  1987.         blt.s    aread_d2_to_d1a                ;nope. from ram!
  1988.         move.b    (a3,d2.l),d1
  1989.         rol.w    #8,d1
  1990.  
  1991.         fetch_next_i
  1992.         cnop    0,4
  1993.  
  1994. aread_d2_to_d1a:move.b    (a2,d2.l),d1                ;ram read.
  1995.         rol.w    #8,d1
  1996.  
  1997.         fetch_next_i
  1998.         cnop    0,128
  1999.  
  2000. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2001. ;        CB46 - BIT 0, (HL) - [n = 0, h = 1, c = c, z = x]
  2002. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2003.  
  2004. z80_optc_CB46:    subq.l    #4,a5                    ;less cycles.
  2005.  
  2006.         tst.w    d2                    ;rom read?
  2007.         blt.s    read_d2a_to_d7a                ;nope. from ram!
  2008.         move.w    d4,CCR                    ;the status register.
  2009.         btst.b    #0,(a3,d2.l)
  2010.         move.w    CCR,d4                    ;status updated.
  2011.  
  2012.         fetch_next_i
  2013.         cnop    0,4
  2014.  
  2015. read_d2a_to_d7a:move.w    d4,CCR                    ;the status register.
  2016.         btst.b    #0,(a2,d2.l)                ;ram read.
  2017.         move.w    CCR,d4                    ;status updated.
  2018.  
  2019.         fetch_next_i
  2020.         cnop    0,128
  2021.  
  2022. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2023. ;        47 - LD B, A
  2024. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2025.  
  2026. z80_optcode_47:    ror.w    #8,d1
  2027.         subq.l    #1,a5                    ;less cycles.
  2028.         move.b    d3,d1
  2029.         rol.w    #8,d1
  2030.  
  2031.         fetch_next_i
  2032.         cnop    0,128
  2033.  
  2034. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2035. ;        CB47 - BIT 0, A - [n = 0, h = 1, c = c, z = x]
  2036. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2037.  
  2038. z80_optc_CB47:    subq.l    #2,a5                    ;less cycles.
  2039.         move.w    d4,CCR                    ;the status register.
  2040.         btst    #0,d3
  2041.         move.w    CCR,d4                    ;status updated.
  2042.  
  2043.         fetch_next_i
  2044.         cnop    0,128
  2045.  
  2046. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2047. ;        48 - LD C, B
  2048. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2049.  
  2050. z80_optcode_48:    move.w    d1,d7
  2051.         subq.l    #1,a5                    ;less cycles.
  2052.         lsr.w    #8,d7
  2053.         move.b    d7,d1
  2054.  
  2055.         fetch_next_i
  2056.         cnop    0,128
  2057.  
  2058. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2059. ;        CB48 - BIT 1, B - [n = 0, h = 1, c = c, z = x]
  2060. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2061.  
  2062. z80_optc_CB48:    subq.l    #2,a5                    ;less cycles.
  2063.         move.w    d4,CCR                    ;the status register.
  2064.         btst    #9,d1
  2065.         move.w    CCR,d4                    ;status updated.
  2066.  
  2067.         fetch_next_i
  2068.         cnop    0,128
  2069.  
  2070. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2071. ;        49 - LD C, C
  2072. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2073.  
  2074. z80_optcode_49:    subq.l    #1,a5                    ;less cycles.
  2075.  
  2076.         fetch_next_i
  2077.         cnop    0,128
  2078.  
  2079. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2080. ;        CB49 - BIT 1, C - [n = 0, h = 1, c = c, z = x]
  2081. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2082.  
  2083. z80_optc_CB49:    subq.l    #2,a5                    ;less cycles.
  2084.         move.w    d4,CCR                    ;the status register.
  2085.         btst    #1,d1
  2086.         move.w    CCR,d4                    ;status updated.
  2087.  
  2088.         fetch_next_i
  2089.         cnop    0,128
  2090.  
  2091. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2092. ;        4A - LD C, D
  2093. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2094.  
  2095. z80_optcode_4A:    move.w    d0,d7
  2096.         subq.l    #1,a5                    ;less cycles.
  2097.         lsr.w    #8,d7
  2098.         move.b    d7,d1
  2099.  
  2100.         fetch_next_i
  2101.         cnop    0,128
  2102.  
  2103. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2104. ;        CB4A - BIT 1, D - [n = 0, h = 1, c = c, z = x]
  2105. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2106.  
  2107. z80_optc_CB4A:    subq.l    #2,a5                    ;less cycles.
  2108.         move.w    d4,CCR                    ;the status register.
  2109.         btst    #9,d0
  2110.         move.w    CCR,d4                    ;status updated.
  2111.  
  2112.         fetch_next_i
  2113.         cnop    0,128
  2114.  
  2115. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2116. ;        4B - LD C, E
  2117. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2118.  
  2119. z80_optcode_4B:    subq.l    #1,a5                    ;less cycles.
  2120.         move.b    d0,d1
  2121.  
  2122.         fetch_next_i
  2123.         cnop    0,128
  2124.  
  2125. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2126. ;        CB4B - BIT 1, E - [n = 0, h = 1, c = c, z = x]
  2127. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2128.  
  2129. z80_optc_CB4B:    subq.l    #2,a5                    ;less cycles.
  2130.         move.w    d4,CCR                    ;the status register.
  2131.         btst    #1,d0
  2132.         move.w    CCR,d4                    ;status updated.
  2133.  
  2134.         fetch_next_i
  2135.         cnop    0,128
  2136.  
  2137. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2138. ;        4C - LD C, H
  2139. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2140.  
  2141. z80_optcode_4C:    move.w    d2,d7
  2142.         subq.l    #1,a5                    ;less cycles.
  2143.         lsr.w    #8,d7
  2144.         move.b    d7,d1
  2145.  
  2146.         fetch_next_i
  2147.         cnop    0,128
  2148.  
  2149. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2150. ;        CB4C - BIT 1, H - [n = 0, h = 1, c = c, z = x]
  2151. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2152.  
  2153. z80_optc_CB4C:    subq.l    #2,a5                    ;less cycles.
  2154.         move.w    d4,CCR                    ;the status register.
  2155.         btst    #9,d2
  2156.         move.w    CCR,d4                    ;status updated.
  2157.  
  2158.         fetch_next_i
  2159.         cnop    0,128
  2160.  
  2161. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2162. ;        4D - LD C, L
  2163. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2164.  
  2165. z80_optcode_4D:    subq.l    #1,a5                    ;less cycles.
  2166.         move.b    d2,d1
  2167.  
  2168.         fetch_next_i
  2169.         cnop    0,128
  2170.  
  2171. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2172. ;        CB4D - BIT 1, L - [n = 0, h = 1, c = c, z = x]
  2173. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2174.  
  2175. z80_optc_CB4D:    subq.l    #2,a5                    ;less cycles.
  2176.         move.w    d4,CCR                    ;the status register.
  2177.         btst    #1,d2
  2178.         move.w    CCR,d4                    ;status updated.
  2179.  
  2180.         fetch_next_i
  2181.         cnop    0,128
  2182.  
  2183. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2184. ;        4E - LD C, (HL)
  2185. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2186.  
  2187. z80_optcode_4E:    subq.l    #2,a5                    ;less cycles.
  2188.  
  2189.         tst.w    d2                    ;rom read?
  2190.         blt.s    bread_d2_to_d1a                ;nope. from ram!
  2191.         move.b    (a3,d2.l),d1
  2192.  
  2193.         fetch_next_i
  2194.         cnop    0,4
  2195.  
  2196. bread_d2_to_d1a:move.b    (a2,d2.l),d1                ;ram read.
  2197.  
  2198.         fetch_next_i
  2199.         cnop    0,128
  2200.  
  2201. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2202. ;        CB4E - BIT 1, (HL) - [n = 0, h = 1, c = c, z = x]
  2203. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2204.  
  2205. z80_optc_CB4E:    subq.l    #4,a5                    ;less cycles.
  2206.  
  2207.         tst.w    d2                    ;rom read?
  2208.         blt.s    read_d2b_to_d7a                ;nope. from ram!
  2209.         move.w    d4,CCR                    ;the status register.
  2210.         btst.b    #1,(a3,d2.l)
  2211.         move.w    CCR,d4                    ;status updated.
  2212.  
  2213.         fetch_next_i
  2214.         cnop    0,4
  2215.  
  2216. read_d2b_to_d7a:move.w    d4,CCR                    ;the status register.
  2217.         btst.b    #1,(a2,d2.l)                ;ram read.
  2218.         move.w    CCR,d4                    ;status updated.
  2219.  
  2220.         fetch_next_i
  2221.         cnop    0,128
  2222.  
  2223. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2224. ;        4F - LD C, A
  2225. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2226.  
  2227. z80_optcode_4F:    subq.l    #1,a5                    ;less cycles.
  2228.         move.b    d3,d1
  2229.  
  2230.         fetch_next_i
  2231.         cnop    0,128
  2232.  
  2233. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2234. ;        CB4F - BIT 1, A - [n = 0, h = 1, c = c, z = x]
  2235. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2236.  
  2237. z80_optc_CB4F:    subq.l    #2,a5                    ;less cycles.
  2238.         move.w    d4,CCR                    ;the status register.
  2239.         btst    #1,d3
  2240.         move.w    CCR,d4                    ;status updated.
  2241.  
  2242.         fetch_next_i
  2243.         cnop    0,128
  2244.  
  2245. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2246. ;        50 - LD D, B
  2247. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2248.  
  2249. z80_optcode_50:    move.b    d0,d7
  2250.         subq.l    #1,a5                    ;less cycles.
  2251.         move.w    d1,d0
  2252.         move.b    d7,d0
  2253.  
  2254.         fetch_next_i
  2255.         cnop    0,128
  2256.  
  2257. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2258. ;        CB50 - BIT 2, B - [n = 0, h = 1, c = c, z = x]
  2259. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2260.  
  2261. z80_optc_CB50:    subq.l    #2,a5                    ;less cycles.
  2262.         move.w    d4,CCR                    ;the status register.
  2263.         btst    #10,d1
  2264.         move.w    CCR,d4                    ;status updated.
  2265.  
  2266.         fetch_next_i
  2267.         cnop    0,128
  2268.  
  2269. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2270. ;        51 - LD D, C
  2271. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2272.  
  2273. z80_optcode_51:    ror.w    #8,d0
  2274.         subq.l    #1,a5                    ;less cycles.
  2275.         move.b    d1,d0
  2276.         rol.w    #8,d0
  2277.  
  2278.         fetch_next_i
  2279.         cnop    0,128
  2280.  
  2281. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2282. ;        CB51 - BIT 2, C - [n = 0, h = 1, c = c, z = x]
  2283. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2284.  
  2285. z80_optc_CB51:    subq.l    #2,a5                    ;less cycles.
  2286.         move.w    d4,CCR                    ;the status register.
  2287.         btst    #2,d1
  2288.         move.w    CCR,d4                    ;status updated.
  2289.  
  2290.         fetch_next_i
  2291.         cnop    0,128
  2292.  
  2293. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2294. ;        52 - LD D, D
  2295. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2296.  
  2297. z80_optcode_52:    subq.l    #1,a5                    ;less cycles.
  2298.  
  2299.         fetch_next_i
  2300.         cnop    0,128
  2301.  
  2302. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2303. ;        CB52 - BIT 2, D - [n = 0, h = 1, c = c, z = x]
  2304. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2305.  
  2306. z80_optc_CB52:    subq.l    #2,a5                    ;less cycles.
  2307.         move.w    d4,CCR                    ;the status register.
  2308.         btst    #10,d0
  2309.         move.w    CCR,d4                    ;status updated.
  2310.  
  2311.         fetch_next_i
  2312.         cnop    0,128
  2313.  
  2314. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2315. ;        53 - LD D, E
  2316. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2317.  
  2318. z80_optcode_53:    move.b    d0,d7
  2319.         subq.l    #1,a5                    ;less cycles.
  2320.         lsl.w    #8,d0
  2321.         move.b    d7,d0
  2322.  
  2323.         fetch_next_i
  2324.         cnop    0,128
  2325.  
  2326. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2327. ;        CB53 - BIT 2, E - [n = 0, h = 1, c = c, z = x]
  2328. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2329.  
  2330. z80_optc_CB53:    subq.l    #2,a5                    ;less cycles.
  2331.         move.w    d4,CCR                    ;the status register.
  2332.         btst    #2,d0
  2333.         move.w    CCR,d4                    ;status updated.
  2334.  
  2335.         fetch_next_i
  2336.         cnop    0,128
  2337.  
  2338. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2339. ;        54 - LD D, H
  2340. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2341.  
  2342. z80_optcode_54:    move.b    d0,d7
  2343.         subq.l    #1,a5                    ;less cycles.
  2344.         move.w    d2,d0
  2345.         move.b    d7,d0
  2346.  
  2347.         fetch_next_i
  2348.         cnop    0,128
  2349.  
  2350. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2351. ;        CB54 - BIT 2, H - [n = 0, h = 1, c = c, z = x]
  2352. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2353.  
  2354. z80_optc_CB54:    subq.l    #2,a5                    ;less cycles.
  2355.         move.w    d4,CCR                    ;the status register.
  2356.         btst    #10,d2
  2357.         move.w    CCR,d4                    ;status updated.
  2358.  
  2359.         fetch_next_i
  2360.         cnop    0,128
  2361.  
  2362. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2363. ;        55 - LD D, L
  2364. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2365.  
  2366. z80_optcode_55:    ror.w    #8,d0
  2367.         subq.l    #1,a5                    ;less cycles.
  2368.         move.b    d2,d0
  2369.         rol.w    #8,d0
  2370.  
  2371.         fetch_next_i
  2372.         cnop    0,128
  2373.  
  2374. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2375. ;        CB55 - BIT 2, L - [n = 0, h = 1, c = c, z = x]
  2376. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2377.  
  2378. z80_optc_CB55:    subq.l    #2,a5                    ;less cycles.
  2379.         move.w    d4,CCR                    ;the status register.
  2380.         btst    #2,d2
  2381.         move.w    CCR,d4                    ;status updated.
  2382.  
  2383.         fetch_next_i
  2384.         cnop    0,128
  2385.  
  2386. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2387. ;        56 - LD D, (HL)
  2388. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2389.  
  2390. z80_optcode_56:    ror.w    #8,d0                    ;d down.
  2391.         subq.l    #2,a5                    ;less cycles.
  2392.  
  2393.         tst.w    d2                    ;rom read?
  2394.         blt.s    cread_d2_to_d0a                ;nope. from ram!
  2395.         move.b    (a3,d2.l),d0
  2396.         rol.w    #8,d0                    ;d back to up.
  2397.     
  2398.         fetch_next_i
  2399.         cnop    0,4
  2400.  
  2401. cread_d2_to_d0a:move.b    (a2,d2.l),d0                ;ram read.
  2402.         rol.w    #8,d0                    ;d back to up.
  2403.  
  2404.         fetch_next_i
  2405.         cnop    0,128
  2406.  
  2407. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2408. ;        CB56 - BIT 2, (HL) - [n = 0, h = 1, c = c, z = x]
  2409. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2410.  
  2411. z80_optc_CB56:    subq.l    #4,a5                    ;less cycles.
  2412.  
  2413.         tst.w    d2                    ;rom read?
  2414.         blt.s    read_d2c_to_d7a                ;nope. from ram!
  2415.         move.w    d4,CCR                    ;the status register.
  2416.         btst.b    #2,(a3,d2.l)
  2417.         move.w    CCR,d4                    ;status updated.
  2418.  
  2419.         fetch_next_i
  2420.         cnop    0,4
  2421.  
  2422. read_d2c_to_d7a:move.w    d4,CCR                    ;the status register.
  2423.         btst.b    #2,(a2,d2.l)                ;ram read.
  2424.         move.w    CCR,d4                    ;status updated.
  2425.  
  2426.         fetch_next_i
  2427.         cnop    0,128
  2428.  
  2429. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2430. ;        57 - LD D, A
  2431. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2432.  
  2433. z80_optcode_57:    ror.w    #8,d0
  2434.         subq.l    #1,a5                    ;less cycles.
  2435.         move.b    d3,d0
  2436.         rol.w    #8,d0
  2437.  
  2438.         fetch_next_i
  2439.         cnop    0,128
  2440.  
  2441. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2442. ;        CB57 - BIT 2, A - [n = 0, h = 1, c = c, z = x]
  2443. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2444.  
  2445. z80_optc_CB57:    subq.l    #2,a5                    ;less cycles.
  2446.         move.w    d4,CCR                    ;the status register.
  2447.         btst    #2,d3
  2448.         move.w    CCR,d4                    ;status updated.
  2449.  
  2450.         fetch_next_i
  2451.         cnop    0,128
  2452.  
  2453. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2454. ;        58 - LD E, B
  2455. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2456.  
  2457. z80_optcode_58:    move.w    d1,d7
  2458.         subq.l    #1,a5                    ;less cycles.
  2459.         lsr.w    #8,d7
  2460.         move.b    d7,d0
  2461.  
  2462.         fetch_next_i
  2463.         cnop    0,128
  2464.  
  2465. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2466. ;        CB58 - BIT 3, B - [n = 0, h = 1, c = c, z = x]
  2467. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2468.  
  2469. z80_optc_CB58:    subq.l    #2,a5                    ;less cycles.
  2470.         move.w    d4,CCR                    ;the status register.
  2471.         btst    #11,d1
  2472.         move.w    CCR,d4                    ;status updated.
  2473.  
  2474.         fetch_next_i
  2475.         cnop    0,128
  2476.  
  2477. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2478. ;        59 - LD E, C
  2479. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2480.  
  2481. z80_optcode_59:    move.b    d1,d0
  2482.         subq.l    #1,a5                    ;less cycles.
  2483.  
  2484.         fetch_next_i
  2485.         cnop    0,128
  2486.  
  2487. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2488. ;        CB59 - BIT 3, C - [n = 0, h = 1, c = c, z = x]
  2489. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2490.  
  2491. z80_optc_CB59:    subq.l    #2,a5                    ;less cycles.
  2492.         move.w    d4,CCR                    ;the status register.
  2493.         btst    #3,d1
  2494.         move.w    CCR,d4                    ;status updated.
  2495.  
  2496.         fetch_next_i
  2497.         cnop    0,128
  2498.  
  2499. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2500. ;        5A - LD E, D
  2501. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2502.  
  2503. z80_optcode_5A:    move.w    d0,d7
  2504.         subq.l    #1,a5                    ;less cycles.
  2505.         lsr.w    #8,d7
  2506.         move.b    d7,d0
  2507.  
  2508.         fetch_next_i
  2509.         cnop    0,128
  2510.  
  2511. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2512. ;        CB5A - BIT 3, D - [n = 0, h = 1, c = c, z = x]
  2513. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2514.  
  2515. z80_optc_CB5A:    subq.l    #2,a5                    ;less cycles.
  2516.         move.w    d4,CCR                    ;the status register.
  2517.         btst    #11,d0
  2518.         move.w    CCR,d4                    ;status updated.
  2519.  
  2520.         fetch_next_i
  2521.         cnop    0,128
  2522.  
  2523. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2524. ;        5B - LD E, E
  2525. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2526.  
  2527. z80_optcode_5B:    subq.l    #1,a5                    ;less cycles.
  2528.  
  2529.         fetch_next_i
  2530.         cnop    0,128
  2531.  
  2532. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2533. ;        CB5B - BIT 3, E - [n = 0, h = 1, c = c, z = x]
  2534. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2535.  
  2536. z80_optc_CB5B:    subq.l    #2,a5                    ;less cycles.
  2537.         move.w    d4,CCR                    ;the status register.
  2538.         btst    #3,d0
  2539.         move.w    CCR,d4                    ;status updated.
  2540.  
  2541.         fetch_next_i
  2542.         cnop    0,128
  2543.  
  2544. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2545. ;        5C - LD E, H
  2546. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2547.  
  2548. z80_optcode_5C:    move.w    d2,d7
  2549.         subq.l    #1,a5                    ;less cycles.
  2550.         lsr.w    #8,d7
  2551.         move.b    d7,d0
  2552.  
  2553.         fetch_next_i
  2554.         cnop    0,128
  2555.  
  2556. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2557. ;        CB5C - BIT 3, H - [n = 0, h = 1, c = c, z = x]
  2558. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2559.  
  2560. z80_optc_CB5C:    subq.l    #2,a5                    ;less cycles.
  2561.         move.w    d4,CCR                    ;the status register.
  2562.         btst    #11,d2
  2563.         move.w    CCR,d4                    ;status updated.
  2564.  
  2565.         fetch_next_i
  2566.         cnop    0,128
  2567.  
  2568. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2569. ;        5D - LD E, L
  2570. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2571.  
  2572. z80_optcode_5D:    subq.l    #1,a5                    ;less cycles.
  2573.         move.b    d2,d0                    ;e = l.
  2574.  
  2575.         fetch_next_i
  2576.         cnop    0,128
  2577.  
  2578. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2579. ;        CB5D - BIT 3, L - [n = 0, h = 1, c = c, z = x]
  2580. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2581.  
  2582. z80_optc_CB5D:    subq.l    #2,a5                    ;less cycles.
  2583.         move.w    d4,CCR                    ;the status register.
  2584.         btst    #3,d2
  2585.         move.w    CCR,d4                    ;status updated.
  2586.  
  2587.         fetch_next_i
  2588.         cnop    0,128
  2589.  
  2590. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2591. ;        5E - LD E, (HL)
  2592. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2593.  
  2594. z80_optcode_5E:    subq.l    #2,a5                    ;less cycles.
  2595.  
  2596.         tst.w    d2                    ;rom read?
  2597.         blt.s    dread_d2_to_d0a                ;nope. from ram!
  2598.         move.b    (a3,d2.l),d0
  2599.  
  2600.         fetch_next_i
  2601.         cnop    0,4
  2602.  
  2603. dread_d2_to_d0a:move.b    (a2,d2.l),d0                ;ram read.
  2604.  
  2605.         fetch_next_i
  2606.         cnop    0,128
  2607.  
  2608. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2609. ;        CB5E - BIT 3, (HL) - [n = 0, h = 1, c = c, z = x]
  2610. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2611.  
  2612. z80_optc_CB5E:    subq.l    #4,a5                    ;less cycles.
  2613.  
  2614.         tst.w    d2                    ;rom read?
  2615.         blt.s    read_d2d_to_d7a                ;nope. from ram!
  2616.         move.w    d4,CCR                    ;the status register.
  2617.         btst.b    #3,(a3,d2.l)
  2618.         move.w    CCR,d4                    ;status updated.
  2619.  
  2620.         fetch_next_i
  2621.         cnop    0,4
  2622.  
  2623. read_d2d_to_d7a:move.w    d4,CCR                    ;the status register.
  2624.         btst.b    #3,(a2,d2.l)                ;ram read.
  2625.         move.w    CCR,d4                    ;status updated.
  2626.  
  2627.         fetch_next_i
  2628.         cnop    0,128
  2629.  
  2630. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2631. ;        5F - LD E, A
  2632. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2633.  
  2634. z80_optcode_5F:    subq.l    #1,a5                    ;less cycles.
  2635.         move.b    d3,d0                    ;e = a.
  2636.  
  2637.         fetch_next_i
  2638.         cnop    0,128
  2639.  
  2640. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2641. ;        CB5F - BIT 3, A - [n = 0, h = 1, c = c, z = x]
  2642. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2643.  
  2644. z80_optc_CB5F:    subq.l    #2,a5                    ;less cycles.
  2645.         move.w    d4,CCR                    ;the status register.
  2646.         btst    #3,d3
  2647.         move.w    CCR,d4                    ;status updated.
  2648.  
  2649.         fetch_next_i
  2650.         cnop    0,128
  2651.  
  2652. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2653. ;        60 - LD H, B
  2654. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2655.  
  2656. z80_optcode_60:    move.b    d2,d7
  2657.         subq.l    #1,a5                    ;less cycles.
  2658.         move.w    d1,d2
  2659.         move.b    d7,d2
  2660.  
  2661.         fetch_next_i
  2662.         cnop    0,128
  2663.  
  2664. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2665. ;        CB60 - BIT 4, B - [n = 0, h = 1, c = c, z = x]
  2666. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2667.  
  2668. z80_optc_CB60:    subq.l    #2,a5                    ;less cycles.
  2669.         move.w    d4,CCR                    ;the status register.
  2670.         btst    #12,d1
  2671.         move.w    CCR,d4                    ;status updated.
  2672.  
  2673.         fetch_next_i
  2674.         cnop    0,128
  2675.  
  2676. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2677. ;        61 - LD H, C
  2678. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2679.  
  2680. z80_optcode_61:    ror.w    #8,d2
  2681.         subq.l    #1,a5                    ;less cycles.
  2682.         move.b    d1,d2
  2683.         rol.w    #8,d2
  2684.  
  2685.         fetch_next_i
  2686.         cnop    0,128
  2687.  
  2688. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2689. ;        CB61 - BIT 4, C - [n = 0, h = 1, c = c, z = x]
  2690. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2691.  
  2692. z80_optc_CB61:    subq.l    #2,a5                    ;less cycles.
  2693.         move.w    d4,CCR                    ;the status register.
  2694.         btst    #4,d1
  2695.         move.w    CCR,d4                    ;status updated.
  2696.  
  2697.         fetch_next_i
  2698.         cnop    0,128
  2699.  
  2700. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2701. ;        62 - LD H, D
  2702. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2703.  
  2704. z80_optcode_62:    move.b    d2,d7
  2705.         subq.l    #1,a5                    ;less cycles.
  2706.         move.w    d0,d2
  2707.         move.b    d7,d2
  2708.  
  2709.         fetch_next_i
  2710.         cnop    0,128
  2711.  
  2712. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2713. ;        CB62 - BIT 4, D - [n = 0, h = 1, c = c, z = x]
  2714. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2715.  
  2716. z80_optc_CB62:    subq.l    #2,a5                    ;less cycles.
  2717.         move.w    d4,CCR                    ;the status register.
  2718.         btst    #12,d0
  2719.         move.w    CCR,d4                    ;status updated.
  2720.  
  2721.         fetch_next_i
  2722.         cnop    0,128
  2723.  
  2724. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2725. ;        63 - LD H, E
  2726. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2727.  
  2728. z80_optcode_63:    ror.w    #8,d2                    ;h down.
  2729.         subq.l    #1,a5                    ;less cycles.
  2730.         move.b    d0,d2                    ;h = e.
  2731.         rol.w    #8,d2                    ;h back to up.
  2732.  
  2733.         fetch_next_i
  2734.         cnop    0,128
  2735.  
  2736. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2737. ;        CB63 - BIT 4, E - [n = 0, h = 1, c = c, z = x]
  2738. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2739.  
  2740. z80_optc_CB63:    subq.l    #2,a5                    ;less cycles.
  2741.         move.w    d4,CCR                    ;the status register.
  2742.         btst    #4,d0
  2743.         move.w    CCR,d4                    ;status updated.
  2744.  
  2745.         fetch_next_i
  2746.         cnop    0,128
  2747.  
  2748. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2749. ;        64 - LD H, H
  2750. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2751.  
  2752. z80_optcode_64:    subq.l    #1,a5                    ;less cycles.
  2753.  
  2754.         fetch_next_i
  2755.         cnop    0,128
  2756.  
  2757. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2758. ;        CB64 - BIT 4, H - [n = 0, h = 1, c = c, z = x]
  2759. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2760.  
  2761. z80_optc_CB64:    subq.l    #2,a5                    ;less cycles.
  2762.         move.w    d4,CCR                    ;the status register.
  2763.         btst    #12,d2
  2764.         move.w    CCR,d4                    ;status updated.
  2765.  
  2766.         fetch_next_i
  2767.         cnop    0,128
  2768.  
  2769. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2770. ;        65 - LD H, L
  2771. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2772.  
  2773. z80_optcode_65:    move.b    d2,d7
  2774.         subq.l    #1,a5                    ;less cycles.
  2775.         lsl.w    #8,d2
  2776.         move.b    d7,d2
  2777.  
  2778.         fetch_next_i
  2779.         cnop    0,128
  2780.  
  2781. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2782. ;        CB65 - BIT 4, L - [n = 0, h = 1, c = c, z = x]
  2783. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2784.  
  2785. z80_optc_CB65:    subq.l    #2,a5                    ;less cycles.
  2786.         move.w    d4,CCR                    ;the status register.
  2787.         btst    #4,d2
  2788.         move.w    CCR,d4                    ;status updated.
  2789.  
  2790.         fetch_next_i
  2791.         cnop    0,128
  2792.  
  2793. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2794. ;        66 - LD H, (HL)
  2795. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2796.  
  2797. z80_optcode_66:    move.w    d2,d7                    ;d7 = h.B, l.B.
  2798.         subq.l    #2,a5                    ;less cycles.
  2799.         ror.w    #8,d2                    ;h down.
  2800.  
  2801.         tst.w    d7
  2802.         blt.s    read_d7_to_d2a                ;nope. from ram!
  2803.         move.b    (a3,d7.l),d2
  2804.         rol.w    #8,d2                    ;h back to up.
  2805.  
  2806.         fetch_next_i
  2807.         cnop    0,4
  2808.  
  2809. read_d7_to_d2a:    move.b    (a2,d7.l),d2                ;ram read.
  2810.         rol.w    #8,d2                    ;h back to up.
  2811.  
  2812.         fetch_next_i
  2813.         cnop    0,128
  2814.  
  2815. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2816. ;        CB66 - BIT 4, (HL) - [n = 0, h = 1, c = c, z = x]
  2817. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2818.  
  2819. z80_optc_CB66:    subq.l    #4,a5                    ;less cycles.
  2820.  
  2821.         tst.w    d2                    ;rom read?
  2822.         blt.s    read_d2e_to_d7a                ;nope. from ram!
  2823.         move.w    d4,CCR                    ;the status register.
  2824.         btst.b    #4,(a3,d2.l)
  2825.         move.w    CCR,d4                    ;status updated.
  2826.  
  2827.         fetch_next_i
  2828.         cnop    0,4
  2829.  
  2830. read_d2e_to_d7a:move.w    d4,CCR                    ;the status register.
  2831.         btst.b    #4,(a2,d2.l)                ;ram read.
  2832.         move.w    CCR,d4                    ;status updated.
  2833.  
  2834.         fetch_next_i
  2835.         cnop    0,128
  2836.  
  2837. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2838. ;        67 - LD H, A
  2839. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2840.  
  2841. z80_optcode_67:    ror.w    #8,d2
  2842.         subq.l    #1,a5                    ;less cycles.
  2843.         move.b    d3,d2
  2844.         rol.w    #8,d2
  2845.  
  2846.         fetch_next_i
  2847.         cnop    0,128
  2848.  
  2849. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2850. ;        CB67 - BIT 4, A - [n = 0, h = 1, c = c, z = x]
  2851. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2852.  
  2853. z80_optc_CB67:    subq.l    #2,a5                    ;less cycles.
  2854.         move.w    d4,CCR                    ;the status register.
  2855.         btst    #4,d3
  2856.         move.w    CCR,d4                    ;status updated.
  2857.  
  2858.         fetch_next_i
  2859.         cnop    0,128
  2860.  
  2861. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2862. ;        68 - LD L, B
  2863. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2864.  
  2865. z80_optcode_68:    move.w    d1,d7
  2866.         subq.l    #1,a5                    ;less cycles.
  2867.         lsr.w    #8,d7
  2868.         move.b    d7,d2
  2869.  
  2870.         fetch_next_i
  2871.         cnop    0,128
  2872.  
  2873. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2874. ;        CB68 - BIT 5, B - [n = 0, h = 1, c = c, z = x]
  2875. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2876.  
  2877. z80_optc_CB68:    subq.l    #2,a5                    ;less cycles.
  2878.         move.w    d4,CCR                    ;the status register.
  2879.         btst    #13,d1
  2880.         move.w    CCR,d4                    ;status updated.
  2881.  
  2882.         fetch_next_i
  2883.         cnop    0,128
  2884.  
  2885. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2886. ;        69 - LD L, C
  2887. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2888.  
  2889. z80_optcode_69:    subq.l    #1,a5                    ;less cycles.
  2890.         move.b    d1,d2
  2891.  
  2892.         fetch_next_i
  2893.         cnop    0,128
  2894.  
  2895. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2896. ;        CB69 - BIT 5, C - [n = 0, h = 1, c = c, z = x]
  2897. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2898.  
  2899. z80_optc_CB69:    subq.l    #2,a5                    ;less cycles.
  2900.         move.w    d4,CCR                    ;the status register.
  2901.         btst    #5,d1
  2902.         move.w    CCR,d4                    ;status updated.
  2903.  
  2904.         fetch_next_i
  2905.         cnop    0,128
  2906.  
  2907. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2908. ;        6A - LD L, D
  2909. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2910.  
  2911. z80_optcode_6A:    move.w    d0,d7
  2912.         subq.l    #1,a5                    ;less cycles.
  2913.         lsr.w    #8,d7
  2914.         move.b    d7,d2
  2915.  
  2916.         fetch_next_i
  2917.         cnop    0,128
  2918.  
  2919. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2920. ;        CB6A - BIT 5, D - [n = 0, h = 1, c = c, z = x]
  2921. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2922.  
  2923. z80_optc_CB6A:    subq.l    #2,a5                    ;less cycles.
  2924.         move.w    d4,CCR                    ;the status register.
  2925.         btst    #13,d0
  2926.         move.w    CCR,d4                    ;status updated.
  2927.  
  2928.         fetch_next_i
  2929.         cnop    0,128
  2930.  
  2931. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2932. ;        6B - LD L, E
  2933. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2934.  
  2935. z80_optcode_6B:    subq.l    #1,a5                    ;less cycles.
  2936.         move.b    d0,d2
  2937.  
  2938.         fetch_next_i
  2939.         cnop    0,128
  2940.  
  2941. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2942. ;        CB6B - BIT 5, E - [n = 0, h = 1, c = c, z = x]
  2943. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2944.  
  2945. z80_optc_CB6B:    subq.l    #2,a5                    ;less cycles.
  2946.         move.w    d4,CCR                    ;the status register.
  2947.         btst    #5,d0
  2948.         move.w    CCR,d4                    ;status updated.
  2949.  
  2950.         fetch_next_i
  2951.         cnop    0,128
  2952.  
  2953. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2954. ;        6C - LD L, H
  2955. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2956.  
  2957. z80_optcode_6C:    move.w    d2,d7
  2958.         subq.l    #1,a5                    ;less cycles.
  2959.         lsr.w    #8,d7
  2960.         move.b    d7,d2
  2961.  
  2962.         fetch_next_i
  2963.         cnop    0,128
  2964.  
  2965. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2966. ;        CB6C - BIT 5, H - [n = 0, h = 1, c = c, z = x]
  2967. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2968.  
  2969. z80_optc_CB6C:    subq.l    #2,a5                    ;less cycles.
  2970.         move.w    d4,CCR                    ;the status register.
  2971.         btst    #13,d2
  2972.         move.w    CCR,d4                    ;status updated.
  2973.  
  2974.         fetch_next_i
  2975.         cnop    0,128
  2976.  
  2977. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2978. ;        6D - LD L, L
  2979. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2980.  
  2981. z80_optcode_6D:    subq.l    #1,a5                    ;less cycles.
  2982.  
  2983.         fetch_next_i
  2984.         cnop    0,128
  2985.  
  2986. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2987. ;        CB6D - BIT 5, L - [n = 0, h = 1, c = c, z = x]
  2988. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2989.  
  2990. z80_optc_CB6D:    subq.l    #2,a5                    ;less cycles.
  2991.         move.w    d4,CCR                    ;the status register.
  2992.         btst    #5,d2
  2993.         move.w    CCR,d4                    ;status updated.
  2994.  
  2995.         fetch_next_i
  2996.         cnop    0,128
  2997.  
  2998. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  2999. ;        6E - LD L, (HL)
  3000. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3001.  
  3002. z80_optcode_6E:    subq.l    #2,a5                    ;less cycles.
  3003.  
  3004.         tst.w    d2                    ;rom read?
  3005.         blt.s    read_d2_to_d2a                ;nope. from ram!
  3006.         move.b    (a3,d2.l),d2
  3007.  
  3008.         fetch_next_i
  3009.         cnop    0,4
  3010.  
  3011. read_d2_to_d2a:    move.b    (a2,d2.l),d2                ;ram read.
  3012.  
  3013.         fetch_next_i
  3014.         cnop    0,128
  3015.  
  3016. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3017. ;        CB6E - BIT 5, (HL) - [n = 0, h = 1, c = c, z = x]
  3018. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3019.  
  3020. z80_optc_CB6E:    subq.l    #4,a5                    ;less cycles.
  3021.  
  3022.         tst.w    d2                    ;rom read?
  3023.         blt.s    read_d2f_to_d7a                ;nope. from ram!
  3024.         move.w    d4,CCR                    ;the status register.
  3025.         btst.b    #5,(a3,d2.l)
  3026.         move.w    CCR,d4                    ;status updated.
  3027.  
  3028.         fetch_next_i
  3029.         cnop    0,4
  3030.  
  3031. read_d2f_to_d7a:move.w    d4,CCR                    ;the status register.
  3032.         btst.b    #5,(a2,d2.l)                ;ram read.
  3033.         move.w    CCR,d4                    ;status updated.
  3034.  
  3035.         fetch_next_i
  3036.         cnop    0,128
  3037.  
  3038. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3039. ;        6F - LD L, A
  3040. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3041.  
  3042. z80_optcode_6F:    subq.l    #1,a5                    ;less cycles.
  3043.         move.b    d3,d2                    ;l = a.
  3044.  
  3045.         fetch_next_i
  3046.         cnop    0,128
  3047.  
  3048. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3049. ;        CB6F - BIT 5, A - [n = 0, h = 1, c = c, z = x]
  3050. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3051.  
  3052. z80_optc_CB6F:    subq.l    #2,a5                    ;less cycles.
  3053.         move.w    d4,CCR                    ;the status register.
  3054.         btst    #5,d3
  3055.         move.w    CCR,d4                    ;status updated.
  3056.  
  3057.         fetch_next_i
  3058.         cnop    0,128
  3059.  
  3060. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3061. ;        70 - LD (HL), B
  3062. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3063.  
  3064. z80_optcode_70:    move.w    d1,d6
  3065.         move.w    d2,d7
  3066.         lsr.w    #8,d6
  3067.         move.l    gb_mem_jumps,a6
  3068.         subq.l    #2,a5
  3069.         jsr    ([a6,d2.l*4])                ;memory write.
  3070.  
  3071.         fetch_next_i
  3072.         cnop    0,128
  3073.  
  3074. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3075. ;        CB70 - BIT 6, B - [n = 0, h = 1, c = c, z = x]
  3076. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3077.  
  3078. z80_optc_CB70:    subq.l    #2,a5                    ;less cycles.
  3079.         move.w    d4,CCR                    ;the status register.
  3080.         btst    #14,d1
  3081.         move.w    CCR,d4                    ;status updated.
  3082.  
  3083.         fetch_next_i
  3084.         cnop    0,128
  3085.  
  3086. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3087. ;        71 - LD (HL), C
  3088. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3089.  
  3090. z80_optcode_71:    move.b    d1,d6
  3091.         move.w    d2,d7
  3092.         move.l    gb_mem_jumps,a6
  3093.         subq.l    #2,a5
  3094.         jsr    ([a6,d2.l*4])                ;memory write.
  3095.  
  3096.         fetch_next_i
  3097.         cnop    0,128
  3098.  
  3099. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3100. ;        CB71 - BIT 6, C - [n = 0, h = 1, c = c, z = x]
  3101. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3102.  
  3103. z80_optc_CB71:    subq.l    #2,a5                    ;less cycles.
  3104.         move.w    d4,CCR                    ;the status register.
  3105.         btst    #6,d1
  3106.         move.w    CCR,d4                    ;status updated.
  3107.  
  3108.         fetch_next_i
  3109.         cnop    0,128
  3110.  
  3111. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3112. ;        72 - LD (HL), D
  3113. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3114.  
  3115. z80_optcode_72:    move.w    d0,d6
  3116.         move.w    d2,d7
  3117.         lsr.w    #8,d6
  3118.         move.l    gb_mem_jumps,a6
  3119.         subq.l    #2,a5
  3120.         jsr    ([a6,d2.l*4])                ;memory write.
  3121.  
  3122.         fetch_next_i
  3123.         cnop    0,128
  3124.  
  3125. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3126. ;        CB72 - BIT 6, D - [n = 0, h = 1, c = c, z = x]
  3127. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3128.  
  3129. z80_optc_CB72:    subq.l    #2,a5                    ;less cycles.
  3130.         move.w    d4,CCR                    ;the status register.
  3131.         btst    #14,d0
  3132.         move.w    CCR,d4                    ;status updated.
  3133.  
  3134.         fetch_next_i
  3135.         cnop    0,128
  3136.  
  3137. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3138. ;        73 - LD (HL), E
  3139. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3140.  
  3141. z80_optcode_73:    move.w    d2,d7
  3142.         move.b    d0,d6
  3143.         move.l    gb_mem_jumps,a6
  3144.         subq.l    #2,a5
  3145.         jsr    ([a6,d2.l*4])                ;memory write.
  3146.  
  3147.         fetch_next_i
  3148.         cnop    0,128
  3149.  
  3150. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3151. ;        CB73 - BIT 6, E - [n = 0, h = 1, c = c, z = x]
  3152. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3153.  
  3154. z80_optc_CB73:    subq.l    #2,a5                    ;less cycles.
  3155.         move.w    d4,CCR                    ;the status register.
  3156.         btst    #6,d0
  3157.         move.w    CCR,d4                    ;status updated.
  3158.  
  3159.         fetch_next_i
  3160.         cnop    0,128
  3161.  
  3162. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3163. ;        74 - LD (HL), H
  3164. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3165.  
  3166. z80_optcode_74:    move.w    d2,d6
  3167.         move.w    d2,d7
  3168.         lsr.w    #8,d6
  3169.         move.l    gb_mem_jumps,a6
  3170.         subq.l    #2,a5
  3171.         jsr    ([a6,d2.l*4])                ;memory write.
  3172.  
  3173.         fetch_next_i
  3174.         cnop    0,128
  3175.  
  3176. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3177. ;        CB74 - BIT 6, H - [n = 0, h = 1, c = c, z = x]
  3178. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3179.  
  3180. z80_optc_CB74:    subq.l    #2,a5                    ;less cycles.
  3181.         move.w    d4,CCR                    ;the status register.
  3182.         btst    #14,d2
  3183.         move.w    CCR,d4                    ;status updated.
  3184.  
  3185.         fetch_next_i
  3186.         cnop    0,128
  3187.  
  3188. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3189. ;        75 - LD (HL), L
  3190. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3191.  
  3192. z80_optcode_75:    move.w    d2,d7
  3193.         move.b    d2,d6
  3194.         move.l    gb_mem_jumps,a6
  3195.         subq.l    #2,a5
  3196.         jsr    ([a6,d2.l*4])                ;memory write.
  3197.  
  3198.         fetch_next_i
  3199.         cnop    0,128
  3200.  
  3201. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3202. ;        CB75 - BIT 6, L - [n = 0, h = 1, c = c, z = x]
  3203. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3204.  
  3205. z80_optc_CB75:    subq.l    #2,a5                    ;less cycles.
  3206.         move.w    d4,CCR                    ;the status register.
  3207.         btst    #6,d2
  3208.         move.w    CCR,d4                    ;status updated.
  3209.  
  3210.         fetch_next_i
  3211.         cnop    0,128
  3212.  
  3213. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3214. ;        76 - HALT
  3215. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3216.  
  3217. z80_optcode_76:    subq.l    #1,a5
  3218.         tst.b    i_flag
  3219.         bne.s    z80_optcode_76_skip
  3220.  
  3221.         move.b    #2,z80_halt                ;z80 stopped!
  3222.         rts
  3223.  
  3224.         cnop    0,4
  3225. z80_optcode_76_skip:
  3226.         move.l    a5,d6                    ;test cycles left.
  3227.         ble.s    f_xit_xit
  3228.  
  3229.         IFGT    GAMEBOY_DEBUG
  3230.         jmp    debug_output
  3231.         ELSE
  3232.         move.b    (a0),d7
  3233.         lsl.w    #8,d7                    ;d0 = d0*256.
  3234.         jmp    (a1,d7.l)                ;jump and emulate.
  3235.  
  3236.         cnop    0,4
  3237. f_xit_xit:    rts
  3238.  
  3239.         cnop    0,128
  3240.  
  3241. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3242. ;        CB76 - BIT 6, (HL) - [n = 0, h = 1, c = c, z = x]
  3243. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3244.  
  3245. z80_optc_CB76:    subq.l    #4,a5                    ;less cycles.
  3246.  
  3247.         tst.w    d2                    ;rom read?
  3248.         blt.s    read_d2g_to_d7a                ;nope. from ram!
  3249.         move.w    d4,CCR                    ;the status register.
  3250.         btst.b    #6,(a3,d2.l)
  3251.         move.w    CCR,d4                    ;status updated.
  3252.  
  3253.         fetch_next_i
  3254.         cnop    0,4
  3255.  
  3256. read_d2g_to_d7a:move.w    d4,CCR                    ;the status register.
  3257.         btst.b    #6,(a2,d2.l)                ;ram read.
  3258.         move.w    CCR,d4                    ;status updated.
  3259.  
  3260.         fetch_next_i
  3261.         cnop    0,128
  3262.  
  3263. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3264. ;        77 - LD (HL), A
  3265. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3266.  
  3267. z80_optcode_77:    move.w    d2,d7
  3268.         move.b    d3,d6
  3269.         move.l    gb_mem_jumps,a6
  3270.         subq.l    #2,a5
  3271.         jsr    ([a6,d2.l*4])                ;memory write.
  3272.  
  3273.         fetch_next_i
  3274.         cnop    0,128
  3275.  
  3276. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3277. ;        CB77 - BIT 6, A - [n = 0, h = 1, c = c, z = x]
  3278. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3279.  
  3280. z80_optc_CB77:    subq.l    #2,a5                    ;less cycles.
  3281.         move.w    d4,CCR                    ;the status register.
  3282.         btst    #6,d3
  3283.         move.w    CCR,d4                    ;status updated.
  3284.  
  3285.         fetch_next_i
  3286.         cnop    0,128
  3287.  
  3288. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3289. ;        78 - LD A, B
  3290. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3291.  
  3292. z80_optcode_78:    move.w    d1,d7
  3293.         subq.l    #1,a5                    ;less cycles.
  3294.         lsr.w    #8,d7
  3295.         move.b    d7,d3
  3296.  
  3297.         fetch_next_i
  3298.         cnop    0,128
  3299.  
  3300. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3301. ;        CB78 - BIT 7, B - [n = 0, h = 1, c = c, z = x]
  3302. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3303.  
  3304. z80_optc_CB78:    subq.l    #2,a5                    ;less cycles.
  3305.         move.w    d4,CCR                    ;the status register.
  3306.         btst    #15,d1
  3307.         move.w    CCR,d4                    ;status updated.
  3308.  
  3309.         fetch_next_i
  3310.         cnop    0,128
  3311.  
  3312. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3313. ;        79 - LD A, C
  3314. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3315.  
  3316. z80_optcode_79:    subq.l    #1,a5                    ;less cycles.
  3317.         move.b    d1,d3
  3318.  
  3319.         fetch_next_i
  3320.         cnop    0,128
  3321.  
  3322. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3323. ;        CB79 - BIT 7, C - [n = 0, h = 1, c = c, z = x]
  3324. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3325.  
  3326. z80_optc_CB79:    subq.l    #2,a5                    ;less cycles.
  3327.         move.w    d4,CCR                    ;the status register.
  3328.         btst    #7,d1
  3329.         move.w    CCR,d4                    ;status updated.
  3330.  
  3331.         fetch_next_i
  3332.         cnop    0,128
  3333.  
  3334. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3335. ;        7A - LD A, D
  3336. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3337.  
  3338. z80_optcode_7A:    move.w    d0,d7
  3339.         subq.l    #1,a5                    ;less cycles.
  3340.         lsr.w    #8,d7
  3341.         move.b    d7,d3
  3342.  
  3343.         fetch_next_i
  3344.         cnop    0,128
  3345.  
  3346. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3347. ;        CB7A - BIT 7, D - [n = 0, h = 1, c = c, z = x]
  3348. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3349.  
  3350. z80_optc_CB7A:    subq.l    #2,a5                    ;less cycles.
  3351.         move.w    d4,CCR                    ;the status register.
  3352.         btst    #15,d0
  3353.         move.w    CCR,d4                    ;status updated.
  3354.  
  3355.         fetch_next_i
  3356.         cnop    0,128
  3357.  
  3358. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3359. ;        7B - LD A, E
  3360. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3361.  
  3362. z80_optcode_7B:    subq.l    #1,a5                    ;less cycles.
  3363.         move.b    d0,d3
  3364.  
  3365.         fetch_next_i
  3366.         cnop    0,128
  3367.  
  3368. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3369. ;        CB7B - BIT 7, E - [n = 0, h = 1, c = c, z = x]
  3370. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3371.  
  3372. z80_optc_CB7B:    subq.l    #2,a5                    ;less cycles.
  3373.         move.w    d4,CCR                    ;the status register.
  3374.         btst    #7,d0
  3375.         move.w    CCR,d4                    ;status updated.
  3376.  
  3377.         fetch_next_i
  3378.         cnop    0,128
  3379.  
  3380. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3381. ;        7C - LD A, H
  3382. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3383.  
  3384. z80_optcode_7C:    move.w    d2,d7
  3385.         subq.l    #1,a5                    ;less cycles.
  3386.         lsr.w    #8,d7
  3387.         move.b    d7,d3
  3388.  
  3389.         fetch_next_i
  3390.         cnop    0,128
  3391.  
  3392. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3393. ;        CB7C - BIT 7, H - [n = 0, h = 1, c = c, z = x]
  3394. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3395.  
  3396. z80_optc_CB7C:    subq.l    #2,a5                    ;less cycles.
  3397.         move.w    d4,CCR                    ;the status register.
  3398.         btst    #15,d2
  3399.         move.w    CCR,d4                    ;status updated.
  3400.  
  3401.         fetch_next_i
  3402.         cnop    0,128
  3403.  
  3404. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3405. ;        7D - LD A, L
  3406. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3407.  
  3408. z80_optcode_7D:    subq.l    #1,a5                    ;less cycles.
  3409.         move.b    d2,d3
  3410.  
  3411.         fetch_next_i
  3412.         cnop    0,128
  3413.  
  3414. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3415. ;        CB7D - BIT 7, L - [n = 0, h = 1, c = c, z = x]
  3416. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3417.  
  3418. z80_optc_CB7D:    subq.l    #2,a5                    ;less cycles.
  3419.         move.w    d4,CCR                    ;the status register.
  3420.         btst    #7,d2
  3421.         move.w    CCR,d4                    ;status updated.
  3422.  
  3423.         fetch_next_i
  3424.         cnop    0,128
  3425.  
  3426. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3427. ;        7E - LD A, (HL)
  3428. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3429.  
  3430. z80_optcode_7E:    subq.l    #2,a5                    ;less cycles.
  3431.  
  3432.         tst.w    d2                    ;rom read?
  3433.         blt.s    read_d2_to_d3a3                ;nope. from ram!
  3434.  
  3435.         move.b    (a3,d2.l),d3
  3436.         fetch_next_i
  3437.  
  3438.         cnop    0,4
  3439. read_d2_to_d3a3:move.b    (a2,d2.l),d3                ;ram read.
  3440.  
  3441.         fetch_next_i
  3442.         cnop    0,128
  3443.  
  3444. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3445. ;        CB7E - BIT 7, (HL) - [n = 0, h = 1, c = c, z = x]
  3446. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3447.  
  3448. z80_optc_CB7E:    subq.l    #4,a5                    ;less cycles.
  3449.  
  3450.         tst.w    d2                    ;rom read?
  3451.         blt.s    read_d2h_to_d7a                ;nope. from ram!
  3452.         move.w    d4,CCR                    ;the status register.
  3453.         btst.b    #7,(a3,d2.l)
  3454.         move.w    CCR,d4                    ;status updated.
  3455.  
  3456.         fetch_next_i
  3457.         cnop    0,4
  3458.  
  3459. read_d2h_to_d7a:move.w    d4,CCR                    ;the status register.
  3460.         btst.b    #7,(a2,d2.l)                ;ram read.
  3461.         move.w    CCR,d4                    ;status updated.
  3462.  
  3463.         fetch_next_i
  3464.         cnop    0,128
  3465.  
  3466. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3467. ;        7F - LD A, A
  3468. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3469.  
  3470. z80_optcode_7F:    subq.l    #1,a5                    ;less cycles.
  3471.  
  3472.         fetch_next_i
  3473.         cnop    0,128
  3474.  
  3475. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3476. ;        CB7F - BIT 7, A - [n = 0, h = 1, c = c, z = x]
  3477. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3478.  
  3479. z80_optc_CB7F:    subq.l    #2,a5                    ;less cycles.
  3480.         move.w    d4,CCR                    ;the status register.
  3481.         btst    #7,d3
  3482.         move.w    CCR,d4                    ;status updated.
  3483.  
  3484.         fetch_next_i
  3485.         cnop    0,128
  3486.  
  3487. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3488. ;        80 - ADD B - [n = 0, h = x, c = x, z = x]
  3489. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3490.  
  3491. z80_optcode_80:    ror.w    #8,d1                    ;b down.
  3492.         subq.l    #1,a5                    ;less cycles.
  3493.  
  3494.         add.b    d1,d3                    ;a = a + b.
  3495.         move.w    CCR,d4                    ;status updated.
  3496.         rol.w    #8,d1                    ;b back to up.
  3497.  
  3498.         fetch_next_i
  3499.         cnop    0,128
  3500.  
  3501. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3502. ;        CB80 - RES 0, B
  3503. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3504.  
  3505. z80_optc_CB80:    subq.l    #2,a5                    ;less cycles.
  3506.         and.w    #%1111111011111111,d1
  3507.         fetch_next_i
  3508.         cnop    0,128
  3509.  
  3510. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3511. ;        81 - ADD C - [n = 0, h = x, c = x, z = x]
  3512. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3513.  
  3514. z80_optcode_81:    subq.l    #1,a5                    ;less cycles.
  3515.  
  3516.         add.b    d1,d3                    ;a = a + c.
  3517.         move.w    CCR,d4                    ;status updated.
  3518.  
  3519.         fetch_next_i
  3520.         cnop    0,128
  3521.  
  3522. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3523. ;        CB81 - RES 0, C
  3524. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3525.  
  3526. z80_optc_CB81:    subq.l    #2,a5                    ;less cycles.
  3527.         and.b    #%11111110,d1
  3528.         fetch_next_i
  3529.         cnop    0,128
  3530.  
  3531. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3532. ;        82 - ADD D - [n = 0, h = x, c = x, z = x]
  3533. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3534.  
  3535. z80_optcode_82:    ror.w    #8,d0                    ;d down.
  3536.         subq.l    #1,a5                    ;less cycles.
  3537.  
  3538.         add.b    d0,d3                    ;a = a + d.
  3539.         move.w    CCR,d4                    ;status updated.
  3540.         rol.w    #8,d0                    ;d back to up.
  3541.  
  3542.         fetch_next_i
  3543.         cnop    0,128
  3544.  
  3545. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3546. ;        CB82 - RES 0, D
  3547. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3548.  
  3549. z80_optc_CB82:    subq.l    #2,a5                    ;less cycles.
  3550.         and.w    #%1111111011111111,d0
  3551.         fetch_next_i
  3552.         cnop    0,128
  3553.  
  3554. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3555. ;        83 - ADD E - [n = 0, h = x, c = x, z = x]
  3556. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3557.  
  3558. z80_optcode_83:    subq.l    #1,a5                    ;less cycles.
  3559.  
  3560.         add.b    d0,d3                    ;a = a + e.
  3561.         move.w    CCR,d4                    ;status updated.
  3562.  
  3563.         fetch_next_i
  3564.         cnop    0,128
  3565.  
  3566. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3567. ;        CB83 - RES 0, E
  3568. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3569.  
  3570. z80_optc_CB83:    subq.l    #2,a5                    ;less cycles.
  3571.         and.b    #%11111110,d0
  3572.         fetch_next_i
  3573.         cnop    0,128
  3574.  
  3575. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3576. ;        84 - ADD H - [n = 0, h = x, c = x, z = x]
  3577. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3578.  
  3579. z80_optcode_84:    ror.w    #8,d2                    ;h down.
  3580.         subq.l    #1,a5                    ;less cycles.
  3581.  
  3582.         add.b    d2,d3                    ;a = a + h.
  3583.         move.w    CCR,d4                    ;status updated.
  3584.         rol.w    #8,d2                    ;h back to up.
  3585.  
  3586.         fetch_next_i
  3587.         cnop    0,128
  3588.  
  3589. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3590. ;        CB84 - RES 0, H
  3591. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3592.  
  3593. z80_optc_CB84:    subq.l    #2,a5                    ;less cycles.
  3594.         and.w    #%1111111011111111,d2
  3595.         fetch_next_i
  3596.         cnop    0,128
  3597.  
  3598. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3599. ;        85 - ADD L - [n = 0, h = x, c = x, z = x]
  3600. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3601.  
  3602. z80_optcode_85:    subq.l    #1,a5                    ;less cycles.
  3603.  
  3604.         add.b    d2,d3                    ;a = a + l.
  3605.         move.w    CCR,d4                    ;status updated.
  3606.  
  3607.         fetch_next_i
  3608.         cnop    0,128
  3609.  
  3610. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3611. ;        CB85 - RES 0, L
  3612. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3613.  
  3614. z80_optc_CB85:    subq.l    #2,a5                    ;less cycles.
  3615.         and.b    #%11111110,d2
  3616.         fetch_next_i
  3617.         cnop    0,128
  3618.  
  3619. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3620. ;        86 - ADD (HL) - [n = 0, h = x, c = x, z = x]
  3621. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3622.  
  3623. z80_optcode_86:
  3624.         tst.w    d2
  3625.         blt.s    read_to_0
  3626.  
  3627.         add.b    (a3,d2.l),d3
  3628.         move.w    CCR,d4
  3629.  
  3630.         fetch_next_i
  3631.         cnop    0,4
  3632.  
  3633. read_to_0:    add.b    (a2,d2.l),d3
  3634.         move.w    CCR,d4
  3635.  
  3636.         fetch_next_i
  3637.         cnop    0,128
  3638.  
  3639. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3640. ;        CB86 - RES 0, (HL)
  3641. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3642.  
  3643. z80_optc_CB86:    subq.l    #4,a5                    ;less cycles.
  3644.         and.b    #%11111110,(a2,d2.l)
  3645.         fetch_next_i
  3646.         cnop    0,128
  3647.  
  3648. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3649. ;        87 - ADD A - [n = 0, h = x, c = x, z = x]
  3650. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3651.  
  3652. z80_optcode_87:    subq.l    #1,a5                    ;less cycles.
  3653.  
  3654.         add.b    d3,d3                    ;a = a + a.
  3655.         move.w    CCR,d4                    ;status updated.
  3656.  
  3657.         fetch_next_i
  3658.         cnop    0,128
  3659.  
  3660. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3661. ;        CB87 - RES 0, A
  3662. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3663.  
  3664. z80_optc_CB87:    subq.l    #2,a5                    ;less cycles.
  3665.         and.b    #%11111110,d3
  3666.         fetch_next_i
  3667.         cnop    0,128
  3668.  
  3669. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3670. ;        88 - ADC B - [n = 0, h = x, c = x, z = x]
  3671. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3672.  
  3673. z80_optcode_88:    btst    #0,d4                    ;carry?
  3674.         beq.w    z80_optcode_80                ;normal add.
  3675.  
  3676.         ror.w    #8,d1                    ;b down.
  3677.         subq.l    #1,a5                    ;less cycles.
  3678.  
  3679.         move.w    #%10000,CCR                ;x = 1!
  3680.         addx.b    d1,d3                    ;a = a + b + c.
  3681.         move.w    CCR,d4                    ;status updated.
  3682.  
  3683.         rol.w    #8,d1                    ;b back to up.
  3684.  
  3685.         fetch_next_i
  3686.         cnop    0,128
  3687.  
  3688. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3689. ;        CB88 - RES 1, B
  3690. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3691.  
  3692. z80_optc_CB88:    subq.l    #2,a5                    ;less cycles.
  3693.         and.w    #%1111110111111111,d1
  3694.         fetch_next_i
  3695.         cnop    0,128
  3696.  
  3697. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3698. ;        89 - ADC C - [n = 0, h = x, c = x, z = x]
  3699. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3700.  
  3701. z80_optcode_89:    btst    #0,d4                    ;carry?
  3702.         beq.w    z80_optcode_81                ;normal add.
  3703.  
  3704.         subq.l    #1,a5                    ;less cycles.
  3705.  
  3706.         move.w    #%10000,CCR                ;x = 1!
  3707.         addx.b    d1,d3                    ;a = a + c + c.
  3708.         move.w    CCR,d4                    ;status updated.
  3709.  
  3710.         fetch_next_i
  3711.         cnop    0,128
  3712.  
  3713. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3714. ;        CB89 - RES 1, C
  3715. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3716.  
  3717. z80_optc_CB89:    subq.l    #2,a5                    ;less cycles.
  3718.         and.b    #%11111101,d1
  3719.         fetch_next_i
  3720.         cnop    0,128
  3721.  
  3722. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3723. ;        8A - ADC D - [n = 0, h = x, c = x, z = x]
  3724. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3725.  
  3726. z80_optcode_8A:    btst    #0,d4                    ;carry?
  3727.         beq.w    z80_optcode_82                ;normal add.
  3728.  
  3729.         ror.w    #8,d0                    ;d down.
  3730.         subq.l    #1,a5                    ;less cycles.
  3731.  
  3732.         move.w    #%10000,CCR                ;x = 1!
  3733.         addx.b    d0,d3                    ;a = a + d + c.
  3734.         move.w    CCR,d4                    ;status updated.
  3735.  
  3736.         rol.w    #8,d0                    ;d back to up.
  3737.  
  3738.         fetch_next_i
  3739.         cnop    0,128
  3740.  
  3741. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3742. ;        CB8A - RES 1, D
  3743. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3744.  
  3745. z80_optc_CB8A:    subq.l    #2,a5                    ;less cycles.
  3746.         and.w    #%1111110111111111,d0
  3747.         fetch_next_i
  3748.         cnop    0,128
  3749.  
  3750. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3751. ;        8B - ADC E - [n = 0, h = x, c = x, z = x]
  3752. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3753.  
  3754. z80_optcode_8B:    btst    #0,d4                    ;carry?
  3755.         beq.w    z80_optcode_83                ;normal add.
  3756.  
  3757.         subq.l    #1,a5                    ;less cycles.
  3758.  
  3759.         move.w    #%10000,CCR                ;x = 1!
  3760.         addx.b    d0,d3                    ;a = a + e + c.
  3761.         move.w    CCR,d4                    ;status updated.
  3762.  
  3763.         fetch_next_i
  3764.         cnop    0,128
  3765.  
  3766. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3767. ;        CB8B - RES 1, E
  3768. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3769.  
  3770. z80_optc_CB8B:    subq.l    #2,a5                    ;less cycles.
  3771.         and.b    #%11111101,d0
  3772.         fetch_next_i
  3773.         cnop    0,128
  3774.  
  3775. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3776. ;        8C - ADC H - [n = 0, h = x, c = x, z = x]
  3777. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3778.  
  3779. z80_optcode_8C:    btst    #0,d4                    ;carry?
  3780.         beq.w    z80_optcode_84                ;normal add.
  3781.  
  3782.         ror.w    #8,d2                    ;h down.
  3783.         subq.l    #1,a5                    ;less cycles.
  3784.  
  3785.         move.w    #%10000,CCR                ;x = 1!
  3786.         addx.b    d2,d3                    ;a = a + h + c.
  3787.         move.w    CCR,d4                    ;status updated.
  3788.  
  3789.         rol.w    #8,d2                    ;h back to up.
  3790.  
  3791.         fetch_next_i
  3792.         cnop    0,128
  3793.  
  3794. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3795. ;        CB8C - RES 1, H
  3796. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3797.  
  3798. z80_optc_CB8C:    subq.l    #2,a5                    ;less cycles.
  3799.         and.w    #%1111110111111111,d2
  3800.         fetch_next_i
  3801.         cnop    0,128
  3802.  
  3803. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3804. ;        8D - ADC L - [n = 0, h = x, c = x, z = x]
  3805. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3806.  
  3807. z80_optcode_8D:    btst    #0,d4                    ;carry?
  3808.         beq.w    z80_optcode_85                ;normal add.
  3809.  
  3810.         subq.l    #1,a5                    ;less cycles.
  3811.  
  3812.         move.w    #%10000,CCR                ;x = 1!
  3813.         addx.b    d2,d3                    ;a = a + l + c.
  3814.         move.w    CCR,d4                    ;status updated.
  3815.  
  3816.         fetch_next_i
  3817.         cnop    0,128
  3818.  
  3819. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3820. ;        CB8D - RES 1, L
  3821. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3822.  
  3823. z80_optc_CB8D:    subq.l    #2,a5                    ;less cycles.
  3824.         and.b    #%11111101,d2
  3825.         fetch_next_i
  3826.         cnop    0,128
  3827.  
  3828. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3829. ;        8E - ADC (HL) - [n = 0, h = x, c = x, z = x]
  3830. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3831.  
  3832. z80_optcode_8E:    btst    #0,d4                    ;carry?
  3833.         beq.w    z80_optcode_86                ;normal add.
  3834.  
  3835.         subq.l    #2,a5
  3836.  
  3837.         tst.w    d2
  3838.         blt.s    read_to_2
  3839.  
  3840.         move.b    (a3,d2.l),d6
  3841.         move.w    #%10000,CCR                ;x = 1!
  3842.         addx.b    d6,d3                    ;a = a + d + c.
  3843.         move.w    CCR,d4
  3844.  
  3845.         fetch_next_i
  3846.         cnop    0,4
  3847.  
  3848. read_to_2:    move.b    (a2,d2.l),d6
  3849.         move.w    #%10000,CCR                ;x = 1!
  3850.         addx.b    d6,d3                    ;a = a + d + c.
  3851.         move.w    CCR,d4
  3852.  
  3853.         fetch_next_i
  3854.         cnop    0,128
  3855.  
  3856. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3857. ;        CB8E - RES 1, (HL)
  3858. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3859.  
  3860. z80_optc_CB8E:    subq.l    #4,a5                    ;less cycles.
  3861.         and.b    #%11111101,(a2,d2.l)
  3862.         fetch_next_i
  3863.         cnop    0,128
  3864.  
  3865. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3866. ;        8F - ADC A - [n = 0, h = x, c = x, z = x]
  3867. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3868.  
  3869. z80_optcode_8F:    btst    #0,d4                    ;carry?
  3870.         beq.w    z80_optcode_87                ;normal add.
  3871.  
  3872.         subq.l    #1,a5                    ;less cycles.
  3873.  
  3874.         move.w    #%10000,CCR                ;x = 1!
  3875.         addx.b    d3,d3                    ;a = a + d + c.
  3876.         move.w    CCR,d4                    ;status updated.
  3877.  
  3878.         fetch_next_i
  3879.         cnop    0,128
  3880.  
  3881. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3882. ;        CB8F - RES 1, A
  3883. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3884.  
  3885. z80_optc_CB8F:    subq.l    #2,a5                    ;less cycles.
  3886.         and.b    #%11111101,d3
  3887.         fetch_next_i
  3888.         cnop    0,128
  3889.  
  3890. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3891. ;        90 - SUB B - [n = 1, h = x, c = x, z = x]
  3892. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3893.  
  3894. z80_optcode_90:    ror.w    #8,d1                    ;b down.
  3895.         subq.l    #1,a5                    ;less cycles.
  3896.  
  3897.         sub.b    d1,d3                    ;a = a - b.
  3898.         move.w    CCR,d4                    ;status updated.
  3899.         rol.w    #8,d1                    ;b back to up.
  3900.  
  3901.         fetch_next_i
  3902.         cnop    0,128
  3903.  
  3904. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3905. ;        CB90 - RES 2, B
  3906. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3907.  
  3908. z80_optc_CB90:    subq.l    #2,a5                    ;less cycles.
  3909.         and.w    #%1111101111111111,d1
  3910.         fetch_next_i
  3911.         cnop    0,128
  3912.  
  3913. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3914. ;        91 - SUB C - [n = 1, h = x, c = x, z = x]
  3915. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3916.  
  3917. z80_optcode_91:    subq.l    #1,a5                    ;less cycles.
  3918.  
  3919.         sub.b    d1,d3                    ;a = a - c.
  3920.         move.w    CCR,d4                    ;status updated.
  3921.  
  3922.         fetch_next_i
  3923.         cnop    0,128
  3924.  
  3925. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3926. ;        CB91 - RES 2, C
  3927. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3928.  
  3929. z80_optc_CB91:    subq.l    #2,a5                    ;less cycles.
  3930.         and.b    #%11111011,d1
  3931.         fetch_next_i
  3932.         cnop    0,128
  3933.  
  3934. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3935. ;        92 - SUB D - [n = 1, h = x, c = x, z = x]
  3936. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3937.  
  3938. z80_optcode_92:    ror.w    #8,d0                    ;d down.
  3939.         subq.l    #1,a5                    ;less cycles.
  3940.  
  3941.         sub.b    d0,d3                    ;a = a - d.
  3942.         move.w    CCR,d4                    ;status updated.
  3943.  
  3944.         rol.w    #8,d0                    ;d back to up.
  3945.  
  3946.         fetch_next_i
  3947.         cnop    0,128
  3948.  
  3949. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3950. ;        CB92 - RES 2, D
  3951. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3952.  
  3953. z80_optc_CB92:    subq.l    #2,a5                    ;less cycles.
  3954.         and.w    #%1111101111111111,d0
  3955.         fetch_next_i
  3956.         cnop    0,128
  3957.  
  3958. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3959. ;        93 - SUB E - [n = 1, h = x, c = x, z = x]
  3960. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3961.  
  3962. z80_optcode_93:    subq.l    #1,a5                    ;less cycles.
  3963.  
  3964.         sub.b    d0,d3                    ;a = a - e.
  3965.         move.w    CCR,d4                    ;status updated.
  3966.  
  3967.         fetch_next_i
  3968.         cnop    0,128
  3969.  
  3970. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3971. ;        CB93 - RES 2, E
  3972. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3973.  
  3974. z80_optc_CB93:    subq.l    #2,a5                    ;less cycles.
  3975.         and.b    #%11111011,d0
  3976.         fetch_next_i
  3977.         cnop    0,128
  3978.  
  3979. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3980. ;        94 - SUB H - [n = 1, h = x, c = x, z = x]
  3981. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3982.  
  3983. z80_optcode_94:    ror.w    #8,d2                    ;h down.
  3984.         subq.l    #1,a5                    ;less cycles.
  3985.  
  3986.         sub.b    d2,d3                    ;a = a - h.
  3987.         move.w    CCR,d4                    ;status updated.
  3988.  
  3989.         rol.w    #8,d2                    ;h back to up.
  3990.  
  3991.         fetch_next_i
  3992.         cnop    0,128
  3993.  
  3994. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3995. ;        CB94 - RES 2, H
  3996. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  3997.  
  3998. z80_optc_CB94:    subq.l    #2,a5                    ;less cycles.
  3999.         and.w    #%1111101111111111,d2
  4000.         fetch_next_i
  4001.         cnop    0,128
  4002.  
  4003. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4004. ;        95 - SUB L - [n = 1, h = x, c = x, z = x]
  4005. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4006.  
  4007. z80_optcode_95:    subq.l    #1,a5                    ;less cycles.
  4008.  
  4009.         sub.b    d2,d3                    ;a = a - l.
  4010.         move.w    CCR,d4                    ;status updated.
  4011.  
  4012.         fetch_next_i
  4013.         cnop    0,128
  4014.  
  4015. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4016. ;        CB95 - RES 2, L
  4017. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4018.  
  4019. z80_optc_CB95:    subq.l    #2,a5                    ;less cycles.
  4020.         and.b    #%11111011,d2
  4021.         fetch_next_i
  4022.         cnop    0,128
  4023.  
  4024. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4025. ;        96 - SUB (HL) - [n = 1, h = x, c = x, z = x]
  4026. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4027.  
  4028. z80_optcode_96:    subq.l    #2,a5
  4029.         tst.w    d2
  4030.         blt.s    read_to_1
  4031.  
  4032.         sub.b    (a3,d2.l),d3
  4033.         move.w    CCR,d4
  4034.  
  4035.         fetch_next_i
  4036.         cnop    0,4
  4037.  
  4038. read_to_1:    sub.b    (a2,d2.l),d3
  4039.         move.w    CCR,d4
  4040.  
  4041.         fetch_next_i
  4042.         cnop    0,128
  4043.  
  4044. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4045. ;        CB96 - RES 2, (HL)
  4046. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4047.  
  4048. z80_optc_CB96:    subq.l    #4,a5                    ;less cycles.
  4049.         and.b    #%11111011,(a2,d2.l)
  4050.         fetch_next_i
  4051.         cnop    0,128
  4052.  
  4053. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4054. ;        97 - SUB A - [n = 1, h = x, c = x, z = x]
  4055. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4056.  
  4057. z80_optcode_97:    subq.l    #1,a5                    ;less cycles.
  4058.  
  4059.         sub.b    d3,d3
  4060.         move.w    CCR,d4                    ;status updated.
  4061.  
  4062.         fetch_next_i
  4063.         cnop    0,128
  4064.  
  4065. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4066. ;        CB97 - RES 2, A
  4067. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4068.  
  4069. z80_optc_CB97:    subq.l    #2,a5                    ;less cycles.
  4070.         and.b    #%11111011,d3
  4071.         fetch_next_i
  4072.         cnop    0,128
  4073.  
  4074. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4075. ;        98 - SBC B - [n = 1, h = x, c = x, z = x]
  4076. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4077.  
  4078. z80_optcode_98:    btst    #0,d4                    ;c = 0?
  4079.         beq.w    z80_optcode_90                ;yes. normal sub.
  4080.  
  4081.         ror.w    #8,d1                    ;b down.
  4082.         subq.l    #1,a5                    ;less cycles.
  4083.  
  4084.         move.w    #%10000,CCR                ;x = 1!
  4085.         subx.b    d1,d3                    ;a = a - b - c.
  4086.         move.w    CCR,d4                    ;status updated.
  4087.  
  4088.         rol.w    #8,d1                    ;b back to up.
  4089.  
  4090.         fetch_next_i
  4091.         cnop    0,128
  4092.  
  4093. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4094. ;        CB98 - RES 3, B
  4095. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4096.  
  4097. z80_optc_CB98:    subq.l    #2,a5                    ;less cycles.
  4098.         and.w    #%1111011111111111,d1
  4099.         fetch_next_i
  4100.         cnop    0,128
  4101.  
  4102. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4103. ;        99 - SBC C - [n = 1, h = x, c = x, z = x]
  4104. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4105.  
  4106. z80_optcode_99:    btst    #0,d4                    ;c = 0?
  4107.         beq.w    z80_optcode_91                ;yes. normal sub.
  4108.  
  4109.         subq.l    #1,a5                    ;less cycles.
  4110.  
  4111.         move.w    #%10000,CCR                ;x = 1!
  4112.         subx.b    d1,d3                    ;a = a - c - c.
  4113.         move.w    CCR,d4                    ;status updated.
  4114.  
  4115.         fetch_next_i
  4116.         cnop    0,128
  4117.  
  4118. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4119. ;        CB99 - RES 3, C
  4120. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4121.  
  4122. z80_optc_CB99:    subq.l    #2,a5                    ;less cycles.
  4123.         and.b    #%11110111,d1
  4124.         fetch_next_i
  4125.         cnop    0,128
  4126.  
  4127. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4128. ;        9A - SBC D - [n = 1, h = x, c = x, z = x]
  4129. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4130.  
  4131. z80_optcode_9A:    btst    #0,d4                    ;c = 0?
  4132.         beq.w    z80_optcode_92                ;yes. normal sub.
  4133.  
  4134.         ror.w    #8,d0                    ;d down.
  4135.         subq.l    #1,a5                    ;less cycles.
  4136.  
  4137.         move.w    #%10000,CCR                ;x = 1!
  4138.         subx.b    d0,d3                    ;a = a - d - c.
  4139.         move.w    CCR,d4                    ;status updated.
  4140.  
  4141.         rol.w    #8,d0                    ;d back to up.
  4142.  
  4143.         fetch_next_i
  4144.         cnop    0,128
  4145.  
  4146. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4147. ;        CB9A - RES 3, D
  4148. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4149.  
  4150. z80_optc_CB9A:    subq.l    #2,a5                    ;less cycles.
  4151.         and.w    #%1111011111111111,d0
  4152.         fetch_next_i
  4153.         cnop    0,128
  4154.  
  4155. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4156. ;        9B - SBC E - [n = 1, h = x, c = x, z = x]
  4157. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4158.  
  4159. z80_optcode_9B:    btst    #0,d4                    ;c = 0?
  4160.         beq.w    z80_optcode_93                ;yes. normal sub.
  4161.  
  4162.         subq.l    #1,a5                    ;less cycles.
  4163.  
  4164.         move.w    #%10000,CCR                ;x = 1!
  4165.         subx.b    d0,d3                    ;a = a - e - c.
  4166.         move.w    CCR,d4                    ;status updated.
  4167.  
  4168.         fetch_next_i
  4169.         cnop    0,128
  4170.  
  4171. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4172. ;        CB9B - RES 3, E
  4173. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4174.  
  4175. z80_optc_CB9B:    subq.l    #2,a5                    ;less cycles.
  4176.         and.b    #%11110111,d0
  4177.         fetch_next_i
  4178.         cnop    0,128
  4179.  
  4180. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4181. ;        9C - SBC H - [n = 1, h = x, c = x, z = x]
  4182. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4183.  
  4184. z80_optcode_9C:    btst    #0,d4                    ;c = 0?
  4185.         beq.w    z80_optcode_94                ;yes. normal sub.
  4186.  
  4187.         ror.w    #8,d2                    ;h down.
  4188.         subq.l    #1,a5                    ;less cycles.
  4189.  
  4190.         move.w    #%10000,CCR                ;x = 1!
  4191.         subx.b    d2,d3                    ;a = a - h - c.
  4192.         move.w    CCR,d4                    ;status updated.
  4193.  
  4194.         rol.w    #8,d2                    ;h back to up.
  4195.  
  4196.         fetch_next_i
  4197.         cnop    0,128
  4198.  
  4199. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4200. ;        CB9C - RES 3, H
  4201. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4202.  
  4203. z80_optc_CB9C:    subq.l    #2,a5                    ;less cycles.
  4204.         and.w    #%1111011111111111,d2
  4205.         fetch_next_i
  4206.         cnop    0,128
  4207.  
  4208. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4209. ;        9D - SBC L - [n = 1, h = x, c = x, z = x]
  4210. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4211.  
  4212. z80_optcode_9D:    btst    #0,d4                    ;c = 0?
  4213.         beq.w    z80_optcode_95                ;yes. normal sub.
  4214.  
  4215.         subq.l    #1,a5                    ;less cycles.
  4216.  
  4217.         move.w    #%10000,CCR                ;x = 1!
  4218.         subx.b    d2,d3                    ;a = a - l - c.
  4219.         move.w    CCR,d4                    ;status updated.
  4220.  
  4221.         fetch_next_i
  4222.         cnop    0,128
  4223.  
  4224. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4225. ;        CB9D - RES 3, L
  4226. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4227.  
  4228. z80_optc_CB9D:    subq.l    #2,a5                    ;less cycles.
  4229.         and.b    #%11110111,d2
  4230.         fetch_next_i
  4231.         cnop    0,128
  4232.  
  4233. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4234. ;        9E - SBC (HL) - [n = 1, h = x, c = x, z = x]
  4235. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4236.  
  4237. z80_optcode_9E:    btst    #0,d4                    ;c = 0?
  4238.         beq.w    z80_optcode_96                ;yes. normal sub.
  4239.  
  4240.         subq.l    #2,a5
  4241.  
  4242.         tst.w    d2
  4243.         blt.s    read_to_3
  4244.  
  4245.         move.b    (a3,d2.l),d6
  4246.         move.w    #%10000,CCR                ;x = 1!
  4247.         subx.b    d6,d3                    ;a = a - d - c.
  4248.         move.w    CCR,d4
  4249.  
  4250.         fetch_next_i
  4251.         cnop    0,4
  4252.  
  4253. read_to_3:    move.b    (a2,d2.l),d6
  4254.         move.w    #%10000,CCR                ;x = 1!
  4255.         subx.b    d6,d3                    ;a = a - d - c.
  4256.         move.w    CCR,d4
  4257.  
  4258.         fetch_next_i
  4259.         cnop    0,128
  4260.  
  4261. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4262. ;        CB9E - RES 3, (HL)
  4263. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4264.  
  4265. z80_optc_CB9E:    subq.l    #4,a5                    ;less cycles.
  4266.         and.b    #%11110111,(a2,d2.l)
  4267.         fetch_next_i
  4268.         cnop    0,128
  4269.  
  4270. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4271. ;        9F - SBC A - [n = 1, h = x, c = x, z = x]
  4272. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4273.  
  4274. z80_optcode_9F:    btst    #0,d4                    ;c = 0?
  4275.         beq.w    z80_optcode_97                ;yes. normal sub.
  4276.  
  4277.         subq.l    #1,a5                    ;less cycles.
  4278.  
  4279.         move.w    #%10000,CCR                ;x = 1!
  4280.         subx.b    d3,d3                    ;a = a - a - c.
  4281.         move.w    CCR,d4                    ;status updated.
  4282.  
  4283.         fetch_next_i
  4284.         cnop    0,128
  4285.  
  4286. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4287. ;        CB9F - RES 3, A
  4288. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4289.  
  4290. z80_optc_CB9F:    subq.l    #2,a5                    ;less cycles.
  4291.         and.b    #%11110111,d3
  4292.         fetch_next_i
  4293.         cnop    0,128
  4294.  
  4295. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4296. ;        A0 - AND B - [n = 0, h = 1, c = 0, z = x]
  4297. ;        MC680x0 CLEARS THE CARRY FLAG ITSELF!
  4298. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4299.  
  4300. z80_optcode_A0:    ror.w    #8,d1                    ;b down.
  4301.         subq.l    #1,a5                    ;less cycles.
  4302.         and.b    d1,d3
  4303.         move.w    CCR,d4                    ;status updated.
  4304.         rol.w    #8,d1                    ;b back to up.
  4305.  
  4306.         fetch_next_i
  4307.         cnop    0,128
  4308.  
  4309. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4310. ;        CBA0 - RES 4, B
  4311. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4312.  
  4313. z80_optc_CBA0:    subq.l    #2,a5                    ;less cycles.
  4314.         and.w    #%1110111111111111,d1
  4315.         fetch_next_i
  4316.         cnop    0,128
  4317.  
  4318. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4319. ;        A1 - AND C - [n = 0, h = 1, c = 0, z = x]
  4320. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4321.  
  4322. z80_optcode_A1:    subq.l    #1,a5                    ;less cycles.
  4323.         and.b    d1,d3
  4324.         move.w    CCR,d4                    ;status updated.
  4325.  
  4326.         fetch_next_i
  4327.         cnop    0,128
  4328.  
  4329. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4330. ;        CBA1 - RES 4, C
  4331. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4332.  
  4333. z80_optc_CBA1:    subq.l    #2,a5                    ;less cycles.
  4334.         and.b    #%11101111,d1
  4335.         fetch_next_i
  4336.         cnop    0,128
  4337.  
  4338. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4339. ;        A2 - AND D - [n = 0, h = 1, c = 0, z = x]
  4340. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4341.  
  4342. z80_optcode_A2:    ror.w    #8,d0                    ;d down.
  4343.         subq.l    #1,a5                    ;less cycles.
  4344.         and.b    d0,d3
  4345.         move.w    CCR,d4                    ;status updated.
  4346.         rol.w    #8,d0                    ;d back to up.
  4347.  
  4348.         fetch_next_i
  4349.         cnop    0,128
  4350.  
  4351. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4352. ;        CBA2 - RES 4, D
  4353. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4354.  
  4355. z80_optc_CBA2:    subq.l    #2,a5                    ;less cycles.
  4356.         and.w    #%1110111111111111,d0
  4357.         fetch_next_i
  4358.         cnop    0,128
  4359.  
  4360. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4361. ;        A3 - AND E - [n = 0, h = 1, c = 0, z = x]
  4362. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4363.  
  4364. z80_optcode_A3:    subq.l    #1,a5                    ;less cycles.
  4365.         and.b    d0,d3
  4366.         move.w    CCR,d4                    ;status updated.
  4367.  
  4368.         fetch_next_i
  4369.         cnop    0,128
  4370.  
  4371. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4372. ;        CBA3 - RES 4, E
  4373. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4374.  
  4375. z80_optc_CBA3:    subq.l    #2,a5                    ;less cycles.
  4376.         and.b    #%11101111,d0
  4377.         fetch_next_i
  4378.         cnop    0,128
  4379.  
  4380. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4381. ;        A4 - AND H - [n = 0, h = 1, c = 0, z = x]
  4382. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4383.  
  4384. z80_optcode_A4:    ror.w    #8,d2                    ;h down.
  4385.         subq.l    #1,a5                    ;less cycles.
  4386.         and.b    d2,d3
  4387.         move.w    CCR,d4                    ;status updated.
  4388.         rol.w    #8,d2                    ;h back to up.
  4389.  
  4390.         fetch_next_i
  4391.         cnop    0,128
  4392.  
  4393. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4394. ;        CBA4 - RES 4, H
  4395. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4396.  
  4397. z80_optc_CBA4:    subq.l    #2,a5                    ;less cycles.
  4398.         and.w    #%1110111111111111,d2
  4399.         fetch_next_i
  4400.         cnop    0,128
  4401.  
  4402. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4403. ;        A5 - AND L - [n = 0, h = 1, c = 0, z = x]
  4404. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4405.  
  4406. z80_optcode_A5:    subq.l    #1,a5                    ;less cycles.
  4407.         and.b    d2,d3
  4408.         move.w    CCR,d4                    ;status updated.
  4409.  
  4410.         fetch_next_i
  4411.         cnop    0,128
  4412.  
  4413. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4414. ;        CBA5 - RES 4, L
  4415. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4416.  
  4417. z80_optc_CBA5:    subq.l    #2,a5                    ;less cycles.
  4418.         and.b    #%11101111,d2
  4419.         fetch_next_i
  4420.         cnop    0,128
  4421.  
  4422. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4423. ;        A6 - AND (HL) - [n = 0, h = 1, c = 0, z = x]
  4424. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4425.  
  4426. z80_optcode_A6:    tst.w    d2
  4427.         blt.s    read_to_4
  4428.  
  4429.         move.b    (a3,d2.l),d6
  4430.         subq.l    #2,a5
  4431.         and.b    d6,d3
  4432.         move.w    CCR,d4
  4433.  
  4434.         fetch_next_i
  4435.         cnop    0,4
  4436.  
  4437. read_to_4:    move.b    (a2,d2.l),d6
  4438.         subq.l    #2,a5
  4439.         and.b    d6,d3
  4440.         move.w    CCR,d4
  4441.  
  4442.         fetch_next_i
  4443.         cnop    0,128
  4444.  
  4445. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4446. ;        CBA6 - RES 4, (HL)
  4447. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4448.  
  4449. z80_optc_CBA6:    subq.l    #4,a5                    ;less cycles.
  4450.         and.b    #%11101111,(a2,d2.l)
  4451.         fetch_next_i
  4452.         cnop    0,128
  4453.  
  4454. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4455. ;        A7 - AND A - [n = 0, h = 1, c = 0, z = x]
  4456. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4457.  
  4458. z80_optcode_A7:    subq.l    #1,a5                    ;less cycles.
  4459.         and.b    d3,d3
  4460.         move.w    CCR,d4                    ;status updated.
  4461.  
  4462.         fetch_next_i
  4463.         cnop    0,128
  4464.  
  4465. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4466. ;        CBA7 - RES 4, A
  4467. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4468.  
  4469. z80_optc_CBA7:    subq.l    #2,a5                    ;less cycles.
  4470.         and.b    #%11101111,d3
  4471.         fetch_next_i
  4472.         cnop    0,128
  4473.  
  4474. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4475. ;        A8 - XOR B - [n = 0, h = 0, c = 0, z = x]
  4476. ;        MC680x0 CLEARS THE CARRY FLAG ITSELF!
  4477. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4478.  
  4479. z80_optcode_A8:    ror.w    #8,d1                    ;b down.
  4480.         subq.l    #1,a5                    ;less cycles.
  4481.         eor.b    d1,d3
  4482.         move.w    CCR,d4                    ;status updated.
  4483.         rol.w    #8,d1                    ;b back to up.
  4484.  
  4485.         fetch_next_i
  4486.         cnop    0,128
  4487.  
  4488. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4489. ;        CBA8 - RES 5, B
  4490. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4491.  
  4492. z80_optc_CBA8:    subq.l    #2,a5                    ;less cycles.
  4493.         and.w    #%1101111111111111,d1
  4494.         fetch_next_i
  4495.         cnop    0,128
  4496.  
  4497. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4498. ;        A9 - XOR C - [n = 0, h = 0, c = 0, z = x]
  4499. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4500.  
  4501. z80_optcode_A9:    subq.l    #1,a5                    ;less cycles.
  4502.         eor.b    d1,d3
  4503.         move.w    CCR,d4                    ;status updated.
  4504.  
  4505.         fetch_next_i
  4506.         cnop    0,128
  4507.  
  4508. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4509. ;        CBA9 - RES 5, C
  4510. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4511.  
  4512. z80_optc_CBA9:    subq.l    #2,a5                    ;less cycles.
  4513.         and.b    #%11011111,d1
  4514.         fetch_next_i
  4515.         cnop    0,128
  4516.  
  4517. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4518. ;        AA - XOR D - [n = 0, h = 0, c = 0, z = x]
  4519. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4520.  
  4521. z80_optcode_AA:    ror.w    #8,d0                    ;d down.
  4522.         subq.l    #1,a5                    ;less cycles.
  4523.         eor.b    d0,d3
  4524.         move.w    CCR,d4                    ;status updated.
  4525.         rol.w    #8,d0                    ;d back to up.
  4526.  
  4527.         fetch_next_i
  4528.         cnop    0,128
  4529.  
  4530. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4531. ;        CBAA - RES 5, D
  4532. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4533.  
  4534. z80_optc_CBAA:    subq.l    #2,a5                    ;less cycles.
  4535.         and.w    #%1101111111111111,d0
  4536.         fetch_next_i
  4537.         cnop    0,128
  4538.  
  4539. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4540. ;        AB - XOR E - [n = 0, h = 0, c = 0, z = x]
  4541. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4542.  
  4543. z80_optcode_AB:    subq.l    #1,a5                    ;less cycles.
  4544.         eor.b    d0,d3
  4545.         move.w    CCR,d4                    ;status updated.
  4546.  
  4547.         fetch_next_i
  4548.         cnop    0,128
  4549.  
  4550. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4551. ;        CBAB - RES 5, E
  4552. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4553.  
  4554. z80_optc_CBAB:    subq.l    #2,a5                    ;less cycles.
  4555.         and.b    #%11011111,d0
  4556.         fetch_next_i
  4557.         cnop    0,128
  4558.  
  4559. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4560. ;        AC - XOR H - [n = 0, h = 0, c = 0, z = x]
  4561. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4562.  
  4563. z80_optcode_AC:    ror.w    #8,d2                    ;h down.
  4564.         subq.l    #1,a5                    ;less cycles.
  4565.         eor.b    d2,d3
  4566.         move.w    CCR,d4                    ;status updated.
  4567.         rol.w    #8,d2                    ;h back to up.
  4568.  
  4569.         fetch_next_i
  4570.         cnop    0,128
  4571.  
  4572. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4573. ;        CBAC - RES 5, H
  4574. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4575.  
  4576. z80_optc_CBAC:    subq.l    #2,a5                    ;less cycles.
  4577.         and.w    #%1101111111111111,d2
  4578.         fetch_next_i
  4579.         cnop    0,128
  4580.  
  4581. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4582. ;        AD - XOR L - [n = 0, h = 0, c = 0, z = x]
  4583. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4584.  
  4585. z80_optcode_AD:    subq.l    #1,a5                    ;less cycles.
  4586.         eor.b    d2,d3
  4587.         move.w    CCR,d4                    ;status updated.
  4588.  
  4589.         fetch_next_i
  4590.         cnop    0,128
  4591.  
  4592. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4593. ;        CBAD - RES 5, L
  4594. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4595.  
  4596. z80_optc_CBAD:    subq.l    #2,a5                    ;less cycles.
  4597.         and.b    #%11011111,d2
  4598.         fetch_next_i
  4599.         cnop    0,128
  4600.  
  4601. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4602. ;        AE - XOR (HL) - [n = 0, h = 0, c = 0, z = x]
  4603. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4604.  
  4605. z80_optcode_AE:    tst.w    d2
  4606.         blt.s    read_to_5
  4607.  
  4608.         move.b    (a3,d2.l),d6
  4609.         subq.l    #2,a5
  4610.         eor.b    d6,d3
  4611.         move.w    CCR,d4
  4612.  
  4613.         fetch_next_i
  4614.         cnop    0,4
  4615.  
  4616. read_to_5:    move.b    (a2,d2.l),d6
  4617.         subq.l    #2,a5
  4618.         eor.b    d6,d3
  4619.         move.w    CCR,d4
  4620.  
  4621.         fetch_next_i
  4622.         cnop    0,128
  4623.  
  4624. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4625. ;        CBAE - RES 5, (HL)
  4626. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4627.  
  4628. z80_optc_CBAE:    subq.l    #4,a5                    ;less cycles.
  4629.         and.b    #%11011111,(a2,d2.l)
  4630.         fetch_next_i
  4631.         cnop    0,128
  4632.  
  4633. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4634. ;        AF - XOR A - [n = 0, h = 0, c = 0, z = x]
  4635. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4636.  
  4637. z80_optcode_AF:    subq.l    #1,a5                    ;less cycles.
  4638.         eor.b    d3,d3
  4639.         move.w    CCR,d4                    ;status updated.
  4640.  
  4641.         fetch_next_i
  4642.         cnop    0,128
  4643.  
  4644. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4645. ;        CBAF - RES 5, A
  4646. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4647.  
  4648. z80_optc_CBAF:    subq.l    #2,a5                    ;less cycles.
  4649.         and.b    #%11011111,d3
  4650.         fetch_next_i
  4651.         cnop    0,128
  4652.  
  4653. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4654. ;        B0 - OR B - [n = 0, h = 0, c = 0, z = x]
  4655. ;        MC680x0 CLEARS THE CARRY FLAG ITSELF!
  4656. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4657.  
  4658. z80_optcode_B0:    ror.w    #8,d1                    ;b down.
  4659.         subq.l    #1,a5                    ;less cycles.
  4660.         or.b    d1,d3
  4661.         move.w    CCR,d4                    ;status updated.
  4662.         rol.w    #8,d1                    ;b back to up.
  4663.  
  4664.         fetch_next_i
  4665.         cnop    0,128
  4666.  
  4667. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4668. ;        CBB0 - RES 6, B
  4669. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4670.  
  4671. z80_optc_CBB0:    subq.l    #2,a5                    ;less cycles.
  4672.         and.w    #%1011111111111111,d1
  4673.         fetch_next_i
  4674.         cnop    0,128
  4675.  
  4676. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4677. ;        B1 - OR C - [n = 0, h = 0, c = 0, z = x]
  4678. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4679.  
  4680. z80_optcode_B1:    subq.l    #1,a5                    ;less cycles.
  4681.         or.b    d1,d3
  4682.         move.w    CCR,d4                    ;status updated.
  4683.  
  4684.         fetch_next_i
  4685.         cnop    0,128
  4686.  
  4687. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4688. ;        CBB1 - RES 6, C
  4689. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4690.  
  4691. z80_optc_CBB1:    subq.l    #2,a5                    ;less cycles.
  4692.         and.b    #%10111111,d1
  4693.         fetch_next_i
  4694.         cnop    0,128
  4695.  
  4696. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4697. ;        B2 - OR D - [n = 0, h = 0, c = 0, z = x]
  4698. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4699.  
  4700. z80_optcode_B2:    ror.w    #8,d0                    ;d down.
  4701.         subq.l    #1,a5                    ;less cycles.
  4702.         or.b    d0,d3
  4703.         move.w    CCR,d4                    ;status updated.
  4704.         rol.w    #8,d0                    ;d back to up.
  4705.  
  4706.         fetch_next_i
  4707.         cnop    0,128
  4708.  
  4709. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4710. ;        CBB2 - RES 6, D
  4711. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4712.  
  4713. z80_optc_CBB2:    subq.l    #2,a5                    ;less cycles.
  4714.         and.w    #%1011111111111111,d0
  4715.         fetch_next_i
  4716.         cnop    0,128
  4717.  
  4718. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4719. ;        B3 - OR E - [n = 0, h = 0, c = 0, z = x]
  4720. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4721.  
  4722. z80_optcode_B3:    subq.l    #1,a5                    ;less cycles.
  4723.         or.b    d0,d3
  4724.         move.w    CCR,d4                    ;status updated.
  4725.  
  4726.         fetch_next_i
  4727.         cnop    0,128
  4728.  
  4729. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4730. ;        CBB3 - RES 6, E
  4731. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4732.  
  4733. z80_optc_CBB3:    subq.l    #2,a5                    ;less cycles.
  4734.         and.b    #%10111111,d0
  4735.         fetch_next_i
  4736.         cnop    0,128
  4737.  
  4738. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4739. ;        B4 - OR H - [n = 0, h = 0, c = 0, z = x]
  4740. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4741.  
  4742. z80_optcode_B4:    ror.w    #8,d2                    ;h down.
  4743.         subq.l    #1,a5                    ;less cycles.
  4744.         or.b    d2,d3
  4745.         move.w    CCR,d4                    ;status updated.
  4746.         rol.w    #8,d2                    ;h back to up.
  4747.  
  4748.         fetch_next_i
  4749.         cnop    0,128
  4750.  
  4751. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4752. ;        CBB4 - RES 6, H
  4753. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4754.  
  4755. z80_optc_CBB4:    subq.l    #2,a5                    ;less cycles.
  4756.         and.w    #%1011111111111111,d2
  4757.         fetch_next_i
  4758.         cnop    0,128
  4759.  
  4760. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4761. ;        B5 - OR L - [n = 0, h = 0, c = 0, z = x]
  4762. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4763.  
  4764. z80_optcode_B5:    subq.l    #1,a5                    ;less cycles.
  4765.         or.b    d2,d3
  4766.         move.w    CCR,d4                    ;status updated.
  4767.  
  4768.         fetch_next_i
  4769.         cnop    0,128
  4770.  
  4771. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4772. ;        CBB5 - RES 6, L
  4773. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4774.  
  4775. z80_optc_CBB5:    subq.l    #2,a5                    ;less cycles.
  4776.         and.b    #%10111111,d2
  4777.         fetch_next_i
  4778.         cnop    0,128
  4779.  
  4780. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4781. ;        B6 - OR (HL) - [n = 0, h = 0, c = 0, z = x]
  4782. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4783.  
  4784. z80_optcode_B6:    subq.l    #2,a5
  4785.  
  4786.         tst.w    d2
  4787.         blt.s    read_to_6
  4788.  
  4789.         move.b    (a3,d2.l),d6
  4790.         or.b    d6,d3
  4791.         move.w    CCR,d4
  4792.  
  4793.         fetch_next_i
  4794.         cnop    0,4
  4795.  
  4796. read_to_6:    move.b    (a2,d2.l),d6
  4797.         or.b    d6,d3
  4798.         move.w    CCR,d4
  4799.  
  4800.         fetch_next_i
  4801.         cnop    0,128
  4802.  
  4803. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4804. ;        CBB6 - RES 6, (HL)
  4805. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4806.  
  4807. z80_optc_CBB6:    subq.l    #4,a5                    ;less cycles.
  4808.         and.b    #%10111111,(a2,d2.l)
  4809.         fetch_next_i
  4810.         cnop    0,128
  4811.  
  4812. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4813. ;        B7 - OR A - [n = 0, h = 0, c = 0, z = x]
  4814. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4815.  
  4816. z80_optcode_B7:    subq.l    #1,a5                    ;less cycles.
  4817.         or.b    d3,d3
  4818.         move.w    CCR,d4                    ;status updated.
  4819.  
  4820.         fetch_next_i
  4821.         cnop    0,128
  4822.  
  4823. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4824. ;        CBB7 - RES 6, A
  4825. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4826.  
  4827. z80_optc_CBB7:    subq.l    #2,a5                    ;less cycles.
  4828.         and.b    #%10111111,d3
  4829.         fetch_next_i
  4830.         cnop    0,128
  4831.  
  4832. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4833. ;        B8 - CP B - [n = 1, h = x, c = x, z = x]
  4834. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4835.  
  4836. z80_optcode_B8:    ror.w    #8,d1                    ;b down.
  4837.         subq.l    #1,a5                    ;less cycles.
  4838.         cmp.b    d1,d3
  4839.         move.w    CCR,d4                    ;status updated.
  4840.         rol.w    #8,d1                    ;b back to up.
  4841.  
  4842.         fetch_next_i
  4843.         cnop    0,128
  4844.  
  4845. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4846. ;        CBB8 - RES 7, B
  4847. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4848.  
  4849. z80_optc_CBB8:    subq.l    #2,a5                    ;less cycles.
  4850.         and.w    #%0111111111111111,d1
  4851.         fetch_next_i
  4852.         cnop    0,128
  4853.  
  4854. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4855. ;        B9 - CP C - [n = 1, h = x, c = x, z = x]
  4856. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4857.  
  4858. z80_optcode_B9:    subq.l    #1,a5                    ;less cycles.
  4859.         cmp.b    d1,d3
  4860.         move.w    CCR,d4                    ;status updated.
  4861.  
  4862.         fetch_next_i
  4863.         cnop    0,128
  4864.  
  4865. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4866. ;        CBB9 - RES 7, C
  4867. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4868.  
  4869. z80_optc_CBB9:    subq.l    #2,a5                    ;less cycles.
  4870.         and.b    #%01111111,d1
  4871.         fetch_next_i
  4872.         cnop    0,128
  4873.  
  4874. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4875. ;        BA - CP D - [n = 1, h = x, c = x, z = x]
  4876. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4877.  
  4878. z80_optcode_BA:    ror.w    #8,d0                    ;d down.
  4879.         subq.l    #1,a5                    ;less cycles.
  4880.         cmp.b    d0,d3
  4881.         move.w    CCR,d4                    ;status updated.
  4882.         rol.w    #8,d0                    ;d back to up.
  4883.  
  4884.         fetch_next_i
  4885.         cnop    0,128
  4886.  
  4887. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4888. ;        CBBA - RES 7, D
  4889. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4890.  
  4891. z80_optc_CBBA:    subq.l    #2,a5                    ;less cycles.
  4892.         and.w    #%0111111111111111,d0
  4893.         fetch_next_i
  4894.         cnop    0,128
  4895.  
  4896. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4897. ;        BB - CP E - [n = 1, h = x, c = x, z = x]
  4898. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4899.  
  4900. z80_optcode_BB:    subq.l    #1,a5                    ;less cycles.
  4901.         cmp.b    d0,d3
  4902.         move.w    CCR,d4                    ;status updated.
  4903.  
  4904.         fetch_next_i
  4905.         cnop    0,128
  4906.  
  4907. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4908. ;        CBBB - RES 7, E
  4909. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4910.  
  4911. z80_optc_CBBB:    subq.l    #2,a5                    ;less cycles.
  4912.         and.b    #%01111111,d0
  4913.         fetch_next_i
  4914.         cnop    0,128
  4915.  
  4916. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4917. ;        BC - CP H - [n = 1, h = x, c = x, z = x]
  4918. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4919.  
  4920. z80_optcode_BC:    ror.w    #8,d2                    ;h down.
  4921.         subq.l    #1,a5                    ;less cycles.
  4922.         cmp.b    d2,d3
  4923.         move.w    CCR,d4                    ;status updated.
  4924.         rol.w    #8,d2                    ;h back to up.
  4925.  
  4926.         fetch_next_i
  4927.         cnop    0,128
  4928.  
  4929. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4930. ;        CBBC - RES 7, H
  4931. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4932.  
  4933. z80_optc_CBBC:    subq.l    #2,a5                    ;less cycles.
  4934.         and.w    #%0111111111111111,d2
  4935.         fetch_next_i
  4936.         cnop    0,128
  4937.  
  4938. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4939. ;        BD - CP L - [n = 1, h = x, c = x, z = x]
  4940. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4941.  
  4942. z80_optcode_BD:    subq.l    #1,a5                    ;less cycles.
  4943.         cmp.b    d2,d3
  4944.         move.w    CCR,d4                    ;status updated.
  4945.  
  4946.         fetch_next_i
  4947.         cnop    0,128
  4948.  
  4949. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4950. ;        CBBD - RES 7, L
  4951. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4952.  
  4953. z80_optc_CBBD:    subq.l    #2,a5                    ;less cycles.
  4954.         and.b    #%01111111,d2
  4955.         fetch_next_i
  4956.         cnop    0,128
  4957.  
  4958. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4959. ;        BE - CP (HL) - [n = 1, h = x, c = x, z = x]
  4960. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4961.  
  4962. z80_optcode_BE:    subq.l    #2,a5
  4963.  
  4964.         tst.w    d2
  4965.         blt.s    read_to_7
  4966.  
  4967.         move.b    (a3,d2.l),d6
  4968.         cmp.b    d6,d3
  4969.         move.w    CCR,d4
  4970.  
  4971.         fetch_next_i
  4972.         cnop    0,4
  4973.  
  4974. read_to_7:    move.b    (a2,d2.l),d6
  4975.         cmp.b    d6,d3
  4976.         move.w    CCR,d4
  4977.  
  4978.         fetch_next_i
  4979.         cnop    0,128
  4980.  
  4981. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4982. ;        CBBE - RES 7, (HL)
  4983. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4984.  
  4985. z80_optc_CBBE:    subq.l    #4,a5                    ;less cycles.
  4986.         and.b    #%01111111,(a2,d2.l)
  4987.         fetch_next_i
  4988.         cnop    0,128
  4989.  
  4990. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4991. ;        BF - CP A - [n = 1, h = x, c = x, z = x]
  4992. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  4993.  
  4994. z80_optcode_BF:    subq.l    #1,a5                    ;less cycles.
  4995.         cmp.b    d3,d3
  4996.         move.w    CCR,d4                    ;status updated.
  4997.  
  4998.         fetch_next_i
  4999.         cnop    0,128
  5000.  
  5001. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5002. ;        CBBF - RES 7, A
  5003. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5004.  
  5005. z80_optc_CBBF:    subq.l    #2,a5                    ;less cycles.
  5006.         and.b    #%01111111,d3
  5007.         fetch_next_i
  5008.         cnop    0,128
  5009.  
  5010. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5011. ;        C0 - RET NZ
  5012. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5013.  
  5014. z80_optcode_C0:    subq.l    #2,a5
  5015.  
  5016.         btst    #2,d4                    ;z - flag set?
  5017.         bne.s    z80_cpu_loop_c0                ;yes. it's zero.
  5018.  
  5019.         move.w    (a2,d5.l),d7
  5020.         addq.w    #2,d5
  5021.         ror.w    #8,d7
  5022.         blt.s    pc_in_ram_xi
  5023.         move.l    a3,z80_pc_base                ;rom base.
  5024.         lea    (a3,d7.l),a0
  5025.  
  5026. z80_cpu_loop_c0:
  5027.         fetch_next_i
  5028.         cnop    0,4
  5029.  
  5030. pc_in_ram_xi:    move.l    a2,z80_pc_base                ;ram base.
  5031.         lea    (a2,d7.l),a0
  5032.  
  5033.         fetch_next_i
  5034.         cnop    0,128
  5035.  
  5036. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5037. ;        CBC0 - SET 0, B
  5038. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5039.  
  5040. z80_optc_CBC0:    subq.l    #2,a5                    ;less cycles.
  5041.         or.w    #%0000000100000000,d1
  5042.         fetch_next_i
  5043.         cnop    0,128
  5044.  
  5045. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5046. ;        C1 - POP BC
  5047. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5048.  
  5049. z80_optcode_C1:    subq.l    #3,a5                    ;less cycles.
  5050.  
  5051.         tst.w    d5                    ;rom read?
  5052.         blt.s    readw_d5_to_d1a                ;nope. from ram!
  5053.         move.w    (a3,d5.l),d1
  5054.         addq.w    #2,d5                    ;sp = sp + 2.
  5055.         ror.w    #8,d1                    ;order correction.
  5056.  
  5057.         fetch_next_i
  5058.         cnop    0,4
  5059.  
  5060. readw_d5_to_d1a:move.w    (a2,d5.l),d1                ;ram read.
  5061.         addq.w    #2,d5                    ;sp = sp + 2.
  5062.         ror.w    #8,d1                    ;order correction.
  5063.  
  5064.         fetch_next_i
  5065.         cnop    0,128
  5066.  
  5067. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5068. ;        CBC1 - SET 0, C
  5069. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5070.  
  5071. z80_optc_CBC1:    subq.l    #2,a5                    ;less cycles.
  5072.         or.b    #%00000001,d1
  5073.         fetch_next_i
  5074.         cnop    0,128
  5075.  
  5076. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5077. ;        C2 - JP NZ, xx
  5078. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5079.  
  5080. z80_optcode_C2:    btst    #2,d4                    ;z - flag set?
  5081.         bne.s    z80_optcode_C2x                ;yes. it's zero.
  5082.  
  5083.         move.w    (a0),d7
  5084.         subq.l    #3,a5                    ;less cycles.
  5085.         ror.w    #8,d7                    ;pc updated.
  5086.         blt.s    pc_in_ram_i
  5087.         move.l    a3,z80_pc_base                ;rom base.
  5088.         lea    (a3,d7.l),a0
  5089.  
  5090.         fetch_next_i
  5091.         cnop    0,4
  5092.  
  5093. pc_in_ram_i:    move.l    a2,z80_pc_base                ;ram base.
  5094.         lea    (a2,d7.l),a0
  5095.  
  5096.         fetch_next_i
  5097.         cnop    0,4
  5098.  
  5099. z80_optcode_C2x:addq.l    #2,a0                    ;no jump.
  5100.         subq.l    #3,a5                    ;less cycles.
  5101.  
  5102.         fetch_next_i
  5103.         cnop    0,128
  5104.  
  5105. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5106. ;        CBC2 - SET 0, D
  5107. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5108.  
  5109. z80_optc_CBC2:    subq.l    #2,a5                    ;less cycles.
  5110.         or.w    #%0000000100000000,d0
  5111.         fetch_next_i
  5112.         cnop    0,128
  5113.  
  5114. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5115. ;        C3 - JP xx
  5116. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5117.  
  5118. z80_optcode_C3:    move.w    (a0),d7
  5119.         subq.l    #3,a5                    ;less cycles.
  5120.         ror.w    #8,d7                    ;pc updated.
  5121.         blt.s    pc_in_ram_ii
  5122.         move.l    a3,z80_pc_base                ;rom base.
  5123.         lea    (a3,d7.l),a0
  5124.  
  5125.         fetch_next_i
  5126.         cnop    0,4
  5127.  
  5128. pc_in_ram_ii:    move.l    a2,z80_pc_base                ;ram base.
  5129.         lea    (a2,d7.l),a0
  5130.  
  5131.         fetch_next_i
  5132.         cnop    0,128
  5133.  
  5134. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5135. ;        CBC3 - SET 0, E
  5136. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5137.  
  5138. z80_optc_CBC3:    subq.l    #2,a5                    ;less cycles.
  5139.         or.b    #%00000001,d0
  5140.         fetch_next_i
  5141.         cnop    0,128
  5142.  
  5143. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5144. ;        C4 - CALL NZ, xx
  5145. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5146.  
  5147. z80_optcode_C4:    btst    #2,d4                    ;z - flag set?
  5148.         bne.s    z80_optcode_C4x                ;yes. it's zero.
  5149.  
  5150.         move.l    a0,d6
  5151.         sub.l    z80_pc_base,d6
  5152.         addq.w    #2,d6
  5153.  
  5154.         ror.w    #8,d6
  5155.         subq.w    #2,d5
  5156.         move.w    d6,(a2,d5.l)
  5157.  
  5158.         move.w    (a0),d7
  5159.         subq.l    #3,a5                    ;less cycles.
  5160.         ror.w    #8,d7
  5161.         blt.s    pc_in_ram_vi
  5162.         move.l    a3,z80_pc_base                ;rom base.
  5163.         lea    (a3,d7.l),a0
  5164.  
  5165.         fetch_next_i
  5166.         cnop    0,4
  5167.  
  5168. pc_in_ram_vi:    move.l    a2,z80_pc_base                ;ram base.
  5169.         lea    (a2,d7.l),a0
  5170.  
  5171.         fetch_next_i
  5172.         cnop    0,4
  5173.  
  5174. z80_optcode_C4x:addq.l    #2,a0                    ;no jump.
  5175.         subq.l    #3,a5                    ;less cycles.
  5176.  
  5177.         fetch_next_i
  5178.         cnop    0,128
  5179.  
  5180. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5181. ;        CBC4 - SET 0, H
  5182. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5183.  
  5184. z80_optc_CBC4:    subq.l    #2,a5                    ;less cycles.
  5185.         or.w    #%0000000100000000,d2
  5186.         fetch_next_i
  5187.         cnop    0,128
  5188.  
  5189. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5190. ;        C5 - PUSH BC
  5191. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5192.  
  5193. z80_optcode_C5:    move.w    d1,d6
  5194.         subq.l    #4,a5                    ;less cycles.
  5195.         ror.w    #8,d6
  5196.         subq.w    #2,d5
  5197.         move.w    d6,(a2,d5.l)
  5198.  
  5199.         fetch_next_i
  5200.         cnop    0,128
  5201.  
  5202. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5203. ;        CBC5 - SET 0, L
  5204. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5205.  
  5206. z80_optc_CBC5:    subq.l    #2,a5                    ;less cycles.
  5207.         or.b    #%00000001,d2
  5208.         fetch_next_i
  5209.         cnop    0,128
  5210.  
  5211. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5212. ;        C6 - ADD x - [n = 0, h = x, c = x, z = x]
  5213. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5214.  
  5215. z80_optcode_C6:    subq.l    #2,a5                    ;less cycles.
  5216.         add.b    (a0)+,d3                ;a = a + x.
  5217.         move.w    CCR,d4                    ;status updated.
  5218.  
  5219.         fetch_next_i
  5220.         cnop    0,128
  5221.  
  5222. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5223. ;        CBC6 - SET 0, (HL)
  5224. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5225.  
  5226. z80_optc_CBC6:    subq.l    #4,a5                    ;less cycles.
  5227.         or.b    #%00000001,(a2,d2.l)
  5228.         fetch_next_i
  5229.         cnop    0,128
  5230.  
  5231. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5232. ;        C7 - RST 0
  5233. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5234.  
  5235. z80_optcode_C7:    move.l    a0,d6
  5236.         sub.l    z80_pc_base,d6
  5237.  
  5238.         ror.w    #8,d6
  5239.         subq.w    #2,d5
  5240.         move.w    d6,(a2,d5.l)
  5241.  
  5242.         move.l    a3,a0
  5243.         subq.l    #8,a5                    ;less cycles.
  5244.         move.l    a3,z80_pc_base
  5245.  
  5246.         fetch_next_i
  5247.         cnop    0,128
  5248.  
  5249. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5250. ;        CBC7 - SET 0, A
  5251. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5252.  
  5253. z80_optc_CBC7:    subq.l    #2,a5                    ;less cycles.
  5254.         or.b    #%00000001,d3
  5255.         fetch_next_i
  5256.         cnop    0,128
  5257.  
  5258. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5259. ;        C8 - RET Z
  5260. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5261.  
  5262. z80_optcode_C8:    subq.l    #2,a5
  5263.  
  5264.         btst    #2,d4                    ;z - flag set?
  5265.         beq.s    z80_cpu_loop_c8                ;nope. it's non-zero.
  5266.  
  5267.         move.w    (a2,d5.l),d7
  5268.         addq.w    #2,d5
  5269.         ror.w    #8,d7
  5270.         blt.s    pc_in_ram_xii
  5271.         move.l    a3,z80_pc_base                ;rom base.
  5272.         lea    (a3,d7.l),a0
  5273.  
  5274. z80_cpu_loop_c8:
  5275.         fetch_next_i
  5276.         cnop    0,4
  5277.  
  5278. pc_in_ram_xii:    move.l    a2,z80_pc_base                ;ram base.
  5279.         lea    (a2,d7.l),a0
  5280.  
  5281.         fetch_next_i
  5282.         cnop    0,128
  5283.  
  5284. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5285. ;        CBC8 - SET 1, B
  5286. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5287.  
  5288. z80_optc_CBC8:    subq.l    #2,a5                    ;less cycles.
  5289.         or.w    #%0000001000000000,d1
  5290.         fetch_next_i
  5291.         cnop    0,128
  5292.  
  5293. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5294. ;        C9 - RET
  5295. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5296.  
  5297. z80_optcode_C9:
  5298.         READW_D5_TO_D7
  5299.         subq.l    #2,a5
  5300.         addq.w    #2,d5
  5301.         ror.w    #8,d7
  5302.         blt.s    pc_in_ram_xvi
  5303.         move.l    a3,z80_pc_base                ;rom base.
  5304.         lea    (a3,d7.l),a0
  5305.  
  5306.         fetch_next_i
  5307.         cnop    0,4
  5308.  
  5309. pc_in_ram_xvi:    move.l    a2,z80_pc_base                ;ram base.
  5310.         lea    (a2,d7.l),a0
  5311.  
  5312.         fetch_next_i
  5313.         cnop    0,128
  5314.  
  5315. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5316. ;        CBC9 - SET 1, C
  5317. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5318.  
  5319. z80_optc_CBC9:    subq.l    #2,a5                    ;less cycles.
  5320.         or.b    #%00000010,d1
  5321.         fetch_next_i
  5322.         cnop    0,128
  5323.  
  5324. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5325. ;        CA - JP Z, xx
  5326. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5327.  
  5328. z80_optcode_CA:    btst    #2,d4                    ;z - flag set?
  5329.         beq.s    z80_optcode_CAx                ;nope. it's non-zero.
  5330.  
  5331.         move.w    (a0),d7
  5332.         subq.l    #3,a5
  5333.         ror.w    #8,d7
  5334.         blt.s    pc_in_ram_iii
  5335.         move.l    a3,z80_pc_base                ;rom base.
  5336.         lea    (a3,d7.l),a0
  5337.  
  5338.         fetch_next_i
  5339.         cnop    0,4
  5340.  
  5341. pc_in_ram_iii:    move.l    a2,z80_pc_base                ;ram base.
  5342.         lea    (a2,d7.l),a0
  5343.  
  5344.         fetch_next_i
  5345.         cnop    0,4
  5346.  
  5347. z80_optcode_CAx:addq.l    #2,a0
  5348.         subq.l    #3,a5
  5349.  
  5350.         fetch_next_i
  5351.         cnop    0,128
  5352.  
  5353. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5354. ;        CBCA - SET 1, D
  5355. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5356.  
  5357. z80_optc_CBCA:    subq.l    #2,a5
  5358.         or.w    #%0000001000000000,d0
  5359.         fetch_next_i
  5360.         cnop    0,128
  5361.  
  5362. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5363. ;        CB - RLC, RL, SLA, SRL, BIT, RES and SET
  5364. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5365.  
  5366. z80_optcode_CB:    move.b    (a0)+,d7
  5367.         lsl.w    #8,d7                    ;d0 = d0*256.
  5368.         jmp    (a4,d7.l)                ;jump and emulate.
  5369.         cnop    0,128
  5370.  
  5371. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5372. ;        CBCB - SET 1, E
  5373. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5374.  
  5375. z80_optc_CBCB:    subq.l    #2,a5                    ;less cycles.
  5376.         or.b    #%00000010,d0
  5377.         fetch_next_i
  5378.         cnop    0,128
  5379.  
  5380. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5381. ;        CC - CALL Z, xx
  5382. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5383.  
  5384. z80_optcode_CC:    btst    #2,d4                    ;z - flag set?
  5385.         beq.s    z80_optcode_CCx                ;nope. it's non-zero.
  5386.  
  5387.         move.l    a0,d6
  5388.         sub.l    z80_pc_base,d6
  5389.         addq.w    #2,d6
  5390.  
  5391.         ror.w    #8,d6
  5392.         subq.w    #2,d5
  5393.         move.w    d6,(a2,d5.l)
  5394.  
  5395.         move.w    (a0),d7
  5396.         subq.l    #3,a5
  5397.         ror.w    #8,d7
  5398.         blt.s    pc_in_ram_vii
  5399.         move.l    a3,z80_pc_base                ;rom base.
  5400.         lea    (a3,d7.l),a0
  5401.  
  5402.         fetch_next_i
  5403.         cnop    0,4
  5404.  
  5405. pc_in_ram_vii:    move.l    a2,z80_pc_base                ;ram base.
  5406.         lea    (a2,d7.l),a0
  5407.  
  5408.         fetch_next_i
  5409.         cnop    0,4
  5410.  
  5411. z80_optcode_CCx:addq.l    #2,a0                    ;no jump.
  5412.         subq.l    #3,a5
  5413.  
  5414.         fetch_next_i
  5415.         cnop    0,128
  5416.  
  5417. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5418. ;        CBCC - SET 1, H
  5419. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5420.  
  5421. z80_optc_CBCC:    subq.l    #2,a5                    ;less cycles.
  5422.         or.w    #%0000001000000000,d2
  5423.         fetch_next_i
  5424.         cnop    0,128
  5425.  
  5426. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5427. ;        CD - CALL xx
  5428. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5429.  
  5430. z80_optcode_CD:    move.l    a0,d6
  5431.         sub.l    z80_pc_base,d6
  5432.         addq.w    #2,d6
  5433.  
  5434.         ror.w    #8,d6
  5435.         subq.w    #2,d5
  5436.         move.w    d6,(a2,d5.l)
  5437.  
  5438.         move.w    (a0),d7
  5439.         subq.l    #3,a5
  5440.         ror.w    #8,d7
  5441.         blt.s    pc_in_ram_viii
  5442.         move.l    a3,z80_pc_base                ;rom base.
  5443.         lea    (a3,d7.l),a0
  5444.  
  5445.         fetch_next_i
  5446.         cnop    0,4
  5447.  
  5448. pc_in_ram_viii:    move.l    a2,z80_pc_base                ;ram base.
  5449.         lea    (a2,d7.l),a0
  5450.  
  5451.         fetch_next_i
  5452.         cnop    0,128
  5453.  
  5454. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5455. ;        CBCD - SET 1, L
  5456. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5457.  
  5458. z80_optc_CBCD:    subq.l    #2,a5                    ;less cycles.
  5459.         or.b    #%00000010,d2
  5460.         fetch_next_i
  5461.         cnop    0,128
  5462.  
  5463. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5464. ;        CE - ADC x - [n = 0, h = x, c = x, z = x]
  5465. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5466.  
  5467. z80_optcode_CE:    btst    #0,d4                    ;c = 0?
  5468.         beq.w    z80_optcode_C6                ;yes. normal add.
  5469.  
  5470.         move.b    (a0)+,d6
  5471.         subq.l    #2,a5                    ;less cycles.
  5472.  
  5473.         move.w    #%10000,CCR                ;x = 1!
  5474.         addx.b    d6,d3                    ;a = a + c + c.
  5475.         move.w    CCR,d4                    ;status updated.
  5476.  
  5477.         fetch_next_i
  5478.         cnop    0,128
  5479.  
  5480. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5481. ;        CBCE - SET 1, (HL)
  5482. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5483.  
  5484. z80_optc_CBCE:    subq.l    #4,a5                    ;less cycles.
  5485.         or.b    #%00000010,(a2,d2.l)
  5486.         fetch_next_i
  5487.         cnop    0,128
  5488.  
  5489. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5490. ;        CF - RST 8
  5491. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5492.  
  5493. z80_optcode_CF:    move.l    a0,d6
  5494.         sub.l    z80_pc_base,d6
  5495.  
  5496.         ror.w    #8,d6
  5497.         subq.w    #2,d5
  5498.         move.w    d6,(a2,d5.l)
  5499.  
  5500.         lea    $8(a3),a0
  5501.         subq.l    #8,a5                    ;less cycles.
  5502.         move.l    a3,z80_pc_base
  5503.  
  5504.         fetch_next_i
  5505.         cnop    0,128
  5506.  
  5507. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5508. ;        CBCF - SET 1, A
  5509. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5510.  
  5511. z80_optc_CBCF:    subq.l    #2,a5                    ;less cycles.
  5512.         or.b    #%00000010,d3
  5513.         fetch_next_i
  5514.         cnop    0,128
  5515.  
  5516. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5517. ;        D0 - RET NC
  5518. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5519.  
  5520. z80_optcode_D0:    subq.l    #2,a5
  5521.  
  5522.         btst    #0,d4                    ;c - flag set?
  5523.         bne.w    z80_cpu_loop_d0                ;yes. no jump.
  5524.  
  5525.         move.w    (a2,d5.l),d7
  5526.         addq.w    #2,d5
  5527.         ror.w    #8,d7
  5528.         blt.s    pc_in_ram_xiii
  5529.         move.l    a3,z80_pc_base                ;rom base.
  5530.         lea    (a3,d7.l),a0
  5531.  
  5532. z80_cpu_loop_d0:
  5533.         fetch_next_i
  5534.         cnop    0,4
  5535.  
  5536. pc_in_ram_xiii:    move.l    a2,z80_pc_base                ;ram base.
  5537.         lea    (a2,d7.l),a0
  5538.  
  5539.         fetch_next_i
  5540.         cnop    0,128
  5541.  
  5542. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5543. ;        CBD0 - SET 2, B
  5544. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5545.  
  5546. z80_optc_CBD0:    subq.l    #2,a5                    ;less cycles.
  5547.         or.w    #%0000010000000000,d1
  5548.         fetch_next_i
  5549.         cnop    0,128
  5550.  
  5551. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5552. ;        D1 - POP DE
  5553. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5554.  
  5555. z80_optcode_D1:    subq.l    #3,a5                    ;less cycles.
  5556.  
  5557.         tst.w    d5                    ;rom read?
  5558.         blt.s    readw_d5_to_d0a                ;nope. from ram!
  5559.         move.w    (a3,d5.l),d0
  5560.         addq.w    #2,d5                    ;sp = sp + 2.
  5561.         ror.w    #8,d0                    ;order correction.
  5562.  
  5563.         fetch_next_i
  5564.         cnop    0,4
  5565.  
  5566. readw_d5_to_d0a:move.w    (a2,d5.l),d0                ;ram read.
  5567.         addq.w    #2,d5                    ;sp = sp + 2.
  5568.         ror.w    #8,d0                    ;order correction.
  5569.  
  5570.         fetch_next_i
  5571.         cnop    0,128
  5572.  
  5573. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5574. ;        CBD1 - SET 2, C
  5575. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5576.  
  5577. z80_optc_CBD1:    subq.l    #2,a5                    ;less cycles.
  5578.         or.b    #%00000100,d1
  5579.         fetch_next_i
  5580.         cnop    0,128
  5581.  
  5582. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5583. ;        D2 - JP NC, xx
  5584. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5585.  
  5586. z80_optcode_D2:    btst    #0,d4                    ;c - flag set?
  5587.         bne.s    z80_optcode_D2x                ;yes. no jump.
  5588.  
  5589.         move.w    (a0),d7
  5590.         subq.l    #3,a5
  5591.         ror.w    #8,d7
  5592.         blt.s    pc_in_ram_iv
  5593.         move.l    a3,z80_pc_base                ;rom base.
  5594.         lea    (a3,d7.l),a0
  5595.  
  5596.         fetch_next_i
  5597.         cnop    0,4
  5598.  
  5599. pc_in_ram_iv:    move.l    a2,z80_pc_base                ;ram base.
  5600.         lea    (a2,d7.l),a0
  5601.  
  5602.         fetch_next_i
  5603.         cnop    0,4
  5604.  
  5605. z80_optcode_D2x:addq.l    #2,a0                    ;no jump.
  5606.         subq.l    #3,a5
  5607.  
  5608.         fetch_next_i
  5609.         cnop    0,128
  5610.  
  5611. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5612. ;        CBD2 - SET 2, D
  5613. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5614.  
  5615. z80_optc_CBD2:    subq.l    #2,a5                    ;less cycles.
  5616.         or.w    #%0000010000000000,d0
  5617.         fetch_next_i
  5618.         cnop    0,128
  5619.  
  5620. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5621. ;        D3 - DB $D3 ???
  5622. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5623.  
  5624. z80_optcode_D3:    fetch_next_i
  5625.         cnop    0,128
  5626.  
  5627. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5628. ;        CBD3 - SET 2, E
  5629. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5630.  
  5631. z80_optc_CBD3:    subq.l    #2,a5                    ;less cycles.
  5632.         or.b    #%00000100,d0
  5633.         fetch_next_i
  5634.         cnop    0,128
  5635.  
  5636. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5637. ;        D4 - CALL NC, xx
  5638. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5639.  
  5640. z80_optcode_D4:    btst    #0,d4                    ;c - flag set?
  5641.         bne.s    z80_optcode_D4x                ;yes. no jump.
  5642.  
  5643.         move.l    a0,d6
  5644.         sub.l    z80_pc_base,d6
  5645.         addq.w    #2,d6
  5646.  
  5647.         ror.w    #8,d6
  5648.         subq.w    #2,d5
  5649.         move.w    d6,(a2,d5.l)
  5650.  
  5651.         move.w    (a0),d7
  5652.         subq.l    #3,a5
  5653.         ror.w    #8,d7
  5654.         blt.s    pc_in_ram_ix
  5655.         move.l    a3,z80_pc_base                ;rom base.
  5656.         lea    (a3,d7.l),a0
  5657.  
  5658.         fetch_next_i
  5659.         cnop    0,4
  5660.  
  5661. pc_in_ram_ix:    move.l    a2,z80_pc_base                ;ram base.
  5662.         lea    (a2,d7.l),a0
  5663.  
  5664.         fetch_next_i
  5665.         cnop    0,4
  5666.  
  5667. z80_optcode_D4x:addq.l    #2,a0                    ;no jump.
  5668.         subq.l    #3,a5
  5669.  
  5670.         fetch_next_i
  5671.         cnop    0,128
  5672.  
  5673. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5674. ;        CBD4 - SET 2, H
  5675. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5676.  
  5677. z80_optc_CBD4:    subq.l    #2,a5                    ;less cycles.
  5678.         or.w    #%0000010000000000,d2
  5679.         fetch_next_i
  5680.         cnop    0,128
  5681.  
  5682. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5683. ;        D5 - PUSH DE
  5684. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5685.  
  5686. z80_optcode_D5:    move.w    d0,d6
  5687.         subq.l    #4,a5                    ;less cycles.
  5688.         ror.w    #8,d6
  5689.         subq.w    #2,d5
  5690.         move.w    d6,(a2,d5.l)
  5691.  
  5692.         fetch_next_i
  5693.         cnop    0,128
  5694.  
  5695. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5696. ;        CBD5 - SET 2, L
  5697. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5698.  
  5699. z80_optc_CBD5:    subq.l    #2,a5                    ;less cycles.
  5700.         or.b    #%00000100,d2
  5701.         fetch_next_i
  5702.         cnop    0,128
  5703.  
  5704. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5705. ;        D6 - SUB x - [n = 1, h = x, c = x, z = x]
  5706. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5707.  
  5708. z80_optcode_D6:    subq.l    #2,a5                    ;less cycles.
  5709.         sub.b    (a0)+,d3                ;a = a - x.
  5710.         move.w    CCR,d4                    ;status updated.
  5711.  
  5712.         fetch_next_i
  5713.         cnop    0,128
  5714.  
  5715. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5716. ;        CBD6 - SET 2, (HL)
  5717. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5718.  
  5719. z80_optc_CBD6:    subq.l    #4,a5                    ;less cycles.
  5720.         or.b    #%00000100,(a2,d2.l)
  5721.         fetch_next_i
  5722.         cnop    0,128
  5723.  
  5724. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5725. ;        D7 - RST 10h
  5726. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5727.  
  5728. z80_optcode_D7:    move.l    a0,d6
  5729.         sub.l    z80_pc_base,d6
  5730.  
  5731.         ror.w    #8,d6
  5732.         subq.w    #2,d5
  5733.         move.w    d6,(a2,d5.l)
  5734.  
  5735.         lea    $10(a3),a0
  5736.         subq.l    #8,a5                    ;less cycles.
  5737.         move.l    a3,z80_pc_base
  5738.  
  5739.         fetch_next_i
  5740.         cnop    0,128
  5741.  
  5742. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5743. ;        CBD7 - SET 2, A
  5744. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5745.  
  5746. z80_optc_CBD7:    subq.l    #2,a5                    ;less cycles.
  5747.         or.b    #%00000100,d3
  5748.         fetch_next_i
  5749.         cnop    0,128
  5750.  
  5751. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5752. ;        D8 - RET C
  5753. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5754.  
  5755. z80_optcode_D8:    subq.l    #2,a5
  5756.  
  5757.         btst    #0,d4                    ;c - flag set?
  5758.         beq.s    z80_cpu_loop_d8                ;no. no return.
  5759.  
  5760.         move.w    (a2,d5.l),d7
  5761.         addq.w    #2,d5
  5762.         ror.w    #8,d7
  5763.         blt.s    pc_in_ram_xiv
  5764.         move.l    a3,z80_pc_base                ;rom base.
  5765.         lea    (a3,d7.l),a0
  5766.  
  5767. z80_cpu_loop_d8:
  5768.         fetch_next_i
  5769.         cnop    0,4
  5770.  
  5771. pc_in_ram_xiv:    move.l    a2,z80_pc_base                ;ram base.
  5772.         lea    (a2,d7.l),a0
  5773.  
  5774.         fetch_next_i
  5775.         cnop    0,128
  5776.  
  5777. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5778. ;        CBD8 - SET 3, B
  5779. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5780.  
  5781. z80_optc_CBD8:    subq.l    #2,a5                    ;less cycles.
  5782.         or.w    #%0000100000000000,d1
  5783.         fetch_next_i
  5784.         cnop    0,128
  5785.  
  5786. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5787. ;        D9 - RETI
  5788. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5789.  
  5790. z80_optcode_D9:    subq.l    #2,a5                    ;less cycles.
  5791.         clr.b    i_flag                    ;enable interrupts.
  5792.  
  5793.         move.w    (a2,d5.l),d7
  5794.         addq.w    #2,d5
  5795.         ror.w    #8,d7
  5796.         blt.s    pc_in_ram_xv
  5797.         move.l    a3,z80_pc_base                ;rom base.
  5798.         lea    (a3,d7.l),a0
  5799.  
  5800.         bra.w    reti_back
  5801.         cnop    0,4
  5802.  
  5803. pc_in_ram_xv:    move.l    a2,z80_pc_base                ;ram base.
  5804.         lea    (a2,d7.l),a0
  5805.  
  5806.         bra.w    reti_back
  5807.         cnop    0,128
  5808.  
  5809. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5810. ;        CBD9 - SET 3, C
  5811. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5812.  
  5813. z80_optc_CBD9:    subq.l    #2,a5                    ;less cycles.
  5814.         or.b    #%00001000,d1
  5815.         fetch_next_i
  5816.         cnop    0,128
  5817.  
  5818. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5819. ;        DA - JP C, xx
  5820. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5821.  
  5822. z80_optcode_DA:    btst    #0,d4                    ;c - flag set?
  5823.         beq.s    z80_optcode_DAx                ;no. no jump.
  5824.  
  5825.         move.w    (a0),d7
  5826.         subq.l    #3,a5
  5827.         ror.w    #8,d7
  5828.         blt.s    pc_in_ram_v
  5829.         move.l    a3,z80_pc_base                ;rom base.
  5830.         lea    (a3,d7.l),a0
  5831.  
  5832.         fetch_next_i
  5833.         cnop    0,4
  5834.  
  5835. pc_in_ram_v:    move.l    a2,z80_pc_base                ;ram base.
  5836.         lea    (a2,d7.l),a0
  5837.  
  5838.         fetch_next_i
  5839.         cnop    0,4
  5840.  
  5841. z80_optcode_DAx:addq.l    #2,a0                    ;no jump.
  5842.         subq.l    #3,a5
  5843.  
  5844.         fetch_next_i
  5845.         cnop    0,128
  5846.  
  5847. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5848. ;        CBDA - SET 3, D
  5849. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5850.  
  5851. z80_optc_CBDA:    subq.l    #2,a5                    ;less cycles.
  5852.         or.w    #%0000100000000000,d0
  5853.         fetch_next_i
  5854.         cnop    0,128
  5855.  
  5856. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5857. ;        DB - DB $DB ???
  5858. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5859.  
  5860. z80_optcode_DB:    fetch_next_i
  5861.         cnop    0,128
  5862.  
  5863. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5864. ;        CBDB - SET 3, E
  5865. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5866.  
  5867. z80_optc_CBDB:    subq.l    #2,a5                    ;less cycles.
  5868.         or.b    #%00001000,d0
  5869.         fetch_next_i
  5870.         cnop    0,128
  5871.  
  5872. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5873. ;        DC - CALL C, xx
  5874. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5875.  
  5876. z80_optcode_DC:    btst    #0,d4                    ;c - flag set?
  5877.         beq.s    z80_optcode_DCx                ;no. no jump.
  5878.  
  5879.         move.l    a0,d6
  5880.         sub.l    z80_pc_base,d6
  5881.         addq.w    #2,d6
  5882.  
  5883.         ror.w    #8,d6
  5884.         subq.w    #2,d5
  5885.         move.w    d6,(a2,d5.l)
  5886.  
  5887.         move.w    (a0),d7
  5888.         subq.l    #3,a5
  5889.         ror.w    #8,d7
  5890.         blt.s    pc_in_ram_x
  5891.         move.l    a3,z80_pc_base                ;rom base.
  5892.         lea    (a3,d7.l),a0
  5893.  
  5894.         fetch_next_i
  5895.         cnop    0,4
  5896.  
  5897. pc_in_ram_x:    move.l    a2,z80_pc_base                ;ram base.
  5898.         lea    (a2,d7.l),a0
  5899.  
  5900.         fetch_next_i
  5901.         cnop    0,4
  5902.  
  5903. z80_optcode_DCx:addq.l    #2,a0                    ;no jump.
  5904.         subq.l    #3,a5
  5905.  
  5906.         fetch_next_i
  5907.         cnop    0,128
  5908.  
  5909. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5910. ;        CBDC - SET 3, H
  5911. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5912.  
  5913. z80_optc_CBDC:    subq.l    #2,a5                    ;less cycles.
  5914.         or.w    #%0000100000000000,d2
  5915.         fetch_next_i
  5916.         cnop    0,128
  5917.  
  5918. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5919. ;        DD - DB $DD
  5920. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5921.  
  5922. z80_optcode_DD:    fetch_next_i
  5923.         cnop    0,128
  5924.  
  5925. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5926. ;        CBDD - SET 3, L
  5927. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5928.  
  5929. z80_optc_CBDD:    subq.l    #2,a5                    ;less cycles.
  5930.         or.b    #%00001000,d2
  5931.         fetch_next_i
  5932.         cnop    0,128
  5933.  
  5934. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5935. ;        DE - SBC x - [n = 1, h = x, c = x, z = x]
  5936. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5937.  
  5938. z80_optcode_DE:    btst    #0,d4                    ;c = 0?
  5939.         beq.w    z80_optcode_D6                ;yes. normal sub.
  5940.  
  5941.         move.b    (a0)+,d6
  5942.         subq.l    #2,a5                    ;less cycles.
  5943.  
  5944.         move.w    #%10000,CCR                ;x = 1!
  5945.         subx.b    d6,d3                    ;a = a - d - c.
  5946.         move.w    CCR,d4                    ;status updated.
  5947.  
  5948.         fetch_next_i
  5949.         cnop    0,128
  5950.  
  5951. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5952. ;        CBDE - SET 3, (HL)
  5953. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5954.  
  5955. z80_optc_CBDE:    subq.l    #4,a5                    ;less cycles.
  5956.         or.b    #%00001000,(a2,d2.l)
  5957.         fetch_next_i
  5958.         cnop    0,128
  5959.  
  5960. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5961. ;        DF - RST 18h
  5962. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5963.  
  5964. z80_optcode_DF:    move.l    a0,d6
  5965.         sub.l    z80_pc_base,d6
  5966.  
  5967.         ror.w    #8,d6
  5968.         subq.w    #2,d5
  5969.         move.w    d6,(a2,d5.l)
  5970.  
  5971.         lea    $18(a3),a0
  5972.         subq.l    #8,a5                    ;less cycles.
  5973.         move.l    a3,z80_pc_base
  5974.  
  5975.         fetch_next_i
  5976.         cnop    0,128
  5977.  
  5978. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5979. ;        CBDF - SET 3, A
  5980. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5981.  
  5982. z80_optc_CBDF:    subq.l    #2,a5
  5983.         or.b    #%00001000,d3
  5984.         fetch_next_i
  5985.         cnop    0,128
  5986.  
  5987. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5988. ;        E0 - LD ($FF00+x), A
  5989. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  5990.  
  5991. z80_optcode_E0:    move.l    gb_mem_jumps,a6
  5992.         move.w    #$ff00,d7                ;custom registers.
  5993.         subq.l    #3,a5
  5994.         move.b    (a0)+,d7
  5995.         move.b    d3,d6
  5996.         jsr    ([a6,d7.l*4])
  5997.  
  5998.         fetch_next_i
  5999.         cnop    0,128
  6000.  
  6001. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6002. ;        CBE0 - SET 4, B
  6003. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6004.  
  6005. z80_optc_CBE0:    subq.l    #2,a5
  6006.         or.w    #%0001000000000000,d1
  6007.         fetch_next_i
  6008.         cnop    0,128
  6009.  
  6010. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6011. ;        E1 - POP HL
  6012. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6013.  
  6014. z80_optcode_E1:    subq.l    #3,a5
  6015.  
  6016.         tst.w    d5                    ;rom read?
  6017.         blt.s    readw_d5_to_d2a                ;nope. from ram!
  6018.  
  6019.         move.w    (a3,d5.l),d2
  6020.         ror.w    #8,d2                    ;order correction.
  6021.         addq.w    #2,d5                    ;sp = sp + 2.
  6022.  
  6023.         fetch_next_i
  6024.         cnop    0,4
  6025.  
  6026. readw_d5_to_d2a:move.w    (a2,d5.l),d2                ;ram read.
  6027.         ror.w    #8,d2                    ;order correction.
  6028.         addq.w    #2,d5                    ;sp = sp + 2.
  6029.  
  6030.         fetch_next_i
  6031.         cnop    0,128
  6032.  
  6033. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6034. ;        CBE1 - SET 4, C
  6035. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6036.  
  6037. z80_optc_CBE1:    subq.l    #2,a5
  6038.         or.b    #%00010000,d1
  6039.         fetch_next_i
  6040.         cnop    0,128
  6041.  
  6042. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6043. ;        E2 - LD ($FF00+C), A
  6044. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6045.  
  6046. z80_optcode_E2:    move.l    gb_mem_jumps,a6
  6047.         move.w    #$ff00,d7
  6048.         subq.l    #2,a5
  6049.         move.b    d1,d7
  6050.         move.b    d3,d6
  6051.         jsr    ([a6,d7.l*4])
  6052.  
  6053.         fetch_next_i
  6054.         cnop    0,128
  6055.  
  6056. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6057. ;        CBE2 - SET 4, D
  6058. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6059.  
  6060. z80_optc_CBE2:    subq.l    #2,a5
  6061.         or.w    #%0001000000000000,d0
  6062.         fetch_next_i
  6063.         cnop    0,128
  6064.  
  6065. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6066. ;        E3 - EX HL, (SP) ???
  6067. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6068.  
  6069. z80_optcode_E3:    move.w    (a2,d5.l),d7
  6070.         ror.w    #8,d2
  6071.         ror.w    #8,d7
  6072.         move.w    d2,(a2,d5.l)
  6073.         move.w    d7,d2
  6074.  
  6075.         fetch_next_i
  6076.         cnop    0,128
  6077.  
  6078. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6079. ;        CBE3 - SET 4, E
  6080. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6081.  
  6082. z80_optc_CBE3:    subq.l    #2,a5
  6083.         or.b    #%00010000,d0
  6084.         fetch_next_i
  6085.         cnop    0,128
  6086.  
  6087. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6088. ;        E4 - DB $E4 ???
  6089. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6090.  
  6091. z80_optcode_E4:    fetch_next_i
  6092.         cnop    0,128
  6093.  
  6094. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6095. ;        CBE4 - SET 4, H
  6096. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6097.  
  6098. z80_optc_CBE4:    subq.l    #2,a5
  6099.         or.w    #%0001000000000000,d2
  6100.         fetch_next_i
  6101.         cnop    0,128
  6102.  
  6103. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6104. ;        E5 - PUSH HL
  6105. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6106.  
  6107. z80_optcode_E5:    move.w    d2,d6
  6108.         subq.l    #4,a5
  6109.         ror.w    #8,d6
  6110.         subq.w    #2,d5
  6111.         move.w    d6,(a2,d5.l)
  6112.  
  6113.         fetch_next_i
  6114.         cnop    0,128
  6115.  
  6116. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6117. ;        CBE5 - SET 4, L
  6118. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6119.  
  6120. z80_optc_CBE5:    subq.l    #2,a5
  6121.         or.b    #%00010000,d2
  6122.         fetch_next_i
  6123.         cnop    0,128
  6124.  
  6125. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6126. ;        E6 - AND x - [n = 0, h = 1, c = 0, z = x]
  6127. ;        MC680x0 CLEARS THE CARRY FLAG ITSELF!
  6128. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6129.  
  6130. z80_optcode_E6:    subq.l    #2,a5
  6131.         and.b    (a0)+,d3
  6132.         move.w    CCR,d4                    ;status updated.
  6133.  
  6134.         fetch_next_i
  6135.         cnop    0,128
  6136.  
  6137. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6138. ;        CBE6 - SET 4, (HL)
  6139. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6140.  
  6141. z80_optc_CBE6:    subq.l    #4,a5                    ;less cycles.
  6142.         or.b    #%00010000,(a2,d2.l)
  6143.         fetch_next_i
  6144.         cnop    0,128
  6145.  
  6146. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6147. ;        E7 - RST 20h
  6148. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6149.  
  6150. z80_optcode_E7:    move.l    a0,d6
  6151.         sub.l    z80_pc_base,d6
  6152.  
  6153.         ror.w    #8,d6
  6154.         subq.w    #2,d5
  6155.         move.w    d6,(a2,d5.l)
  6156.  
  6157.         lea    $20(a3),a0
  6158.         subq.l    #8,a5                    ;less cycles.
  6159.         move.l    a3,z80_pc_base
  6160.  
  6161.         fetch_next_i
  6162.         cnop    0,128
  6163.  
  6164. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6165. ;        CBE7 - SET 4, A
  6166. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6167.  
  6168. z80_optc_CBE7:    subq.l    #2,a5                    ;less cycles.
  6169.         or.b    #%00010000,d3
  6170.         fetch_next_i
  6171.         cnop    0,128
  6172.  
  6173. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6174. ;        E8 - ADD SP, x - [n = 0, h = x, c = x, z = 0]
  6175. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6176.  
  6177. z80_optcode_E8:    move.b    (a0)+,d7
  6178.         ext.w    d7
  6179.         subq.l    #4,a5
  6180.         add.w    d7,d5
  6181.         move.w    CCR,d4
  6182.         and.b    #%1,d4
  6183.  
  6184.         fetch_next_i
  6185.         cnop    0,128
  6186.  
  6187. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6188. ;        CBE8 - SET 5, B
  6189. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6190.  
  6191. z80_optc_CBE8:    subq.l    #2,a5                    ;less cycles.
  6192.         or.w    #%0010000000000000,d1
  6193.         fetch_next_i
  6194.         cnop    0,128
  6195.  
  6196. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6197. ;        E9 - LD PC, HL
  6198. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6199.  
  6200. z80_optcode_E9:    subq.l    #1,a5                    ;less cycles.
  6201.  
  6202.         tst.w    d2
  6203.         blt.s    pc_in_ram_xvii
  6204.         move.l    a3,z80_pc_base                ;rom base.
  6205.         lea    (a3,d2.l),a0
  6206.  
  6207.         fetch_next_i
  6208.         cnop    0,4
  6209.  
  6210. pc_in_ram_xvii:    move.l    a2,z80_pc_base                ;ram base.
  6211.         lea    (a2,d2.l),a0
  6212.  
  6213.         fetch_next_i
  6214.         cnop    0,128
  6215.  
  6216. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6217. ;        CBE9 - SET 5, C
  6218. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6219.  
  6220. z80_optc_CBE9:    subq.l    #2,a5                    ;less cycles.
  6221.         or.b    #%00100000,d1
  6222.         fetch_next_i
  6223.         cnop    0,128
  6224.  
  6225. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6226. ;        EA - LD (xx), A
  6227. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6228.  
  6229. z80_optcode_EA:    move.w    (a0)+,d7
  6230.         subq.l    #4,a5
  6231.         ror.w    #8,d7
  6232.         move.l    gb_mem_jumps,a6
  6233.         move.b    d3,d6
  6234.         jsr    ([a6,d7.l*4])
  6235.  
  6236.         fetch_next_i
  6237.         cnop    0,128
  6238.  
  6239. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6240. ;        CBEA - SET 5, D
  6241. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6242.  
  6243. z80_optc_CBEA:    subq.l    #2,a5
  6244.         or.w    #%0010000000000000,d0
  6245.         fetch_next_i
  6246.         cnop    0,128
  6247.  
  6248. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6249. ;        EB - DB $EB ???
  6250. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6251.  
  6252. z80_optcode_EB:    fetch_next_i
  6253.         cnop    0,128
  6254.  
  6255. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6256. ;        CBEB - SET 5, E
  6257. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6258.  
  6259. z80_optc_CBEB:    subq.l    #2,a5                    ;less cycles.
  6260.         or.b    #%00100000,d0
  6261.         fetch_next_i
  6262.         cnop    0,128
  6263.  
  6264. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6265. ;        EC - DB $EC ???
  6266. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6267.  
  6268. z80_optcode_EC:    fetch_next_i
  6269.         cnop    0,128
  6270.  
  6271. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6272. ;        CBEC - SET 5, H
  6273. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6274.  
  6275. z80_optc_CBEC:    subq.l    #2,a5                    ;less cycles.
  6276.         or.w    #%0010000000000000,d2
  6277.         fetch_next_i
  6278.         cnop    0,128
  6279.  
  6280. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6281. ;        ED - PREFIX $ED ???
  6282. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6283.  
  6284. z80_optcode_ED:    bchg.b    #1,$bfe001
  6285.         fetch_next_i
  6286.         cnop    0,128
  6287.  
  6288. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6289. ;        CBED - SET 5, L
  6290. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6291.  
  6292. z80_optc_CBED:    subq.l    #2,a5                    ;less cycles.
  6293.         or.b    #%00100000,d2
  6294.         fetch_next_i
  6295.         cnop    0,128
  6296.  
  6297. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6298. ;        EE - XOR x - [n = 0, h = 0, c = 0, z = x]
  6299. ;        MC680x0 CLEARS THE CARRY FLAG ITSELF!
  6300. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6301.  
  6302. z80_optcode_EE:    move.b    (a0)+,d7
  6303.         subq.l    #2,a5                    ;less cycles.
  6304.         eor.b    d7,d3
  6305.         move.w    CCR,d4                    ;status updated.
  6306.  
  6307.         fetch_next_i
  6308.         cnop    0,128
  6309.  
  6310. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6311. ;        CBEE - SET 5, (HL)
  6312. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6313.  
  6314. z80_optc_CBEE:    subq.l    #4,a5                    ;less cycles.
  6315.         or.b    #%00100000,(a2,d2.l)
  6316.         fetch_next_i
  6317.         cnop    0,128
  6318.  
  6319. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6320. ;        EF - RST 28h
  6321. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6322.  
  6323. z80_optcode_EF:    move.l    a0,d6
  6324.         sub.l    z80_pc_base,d6
  6325.  
  6326.         ror.w    #8,d6
  6327.         subq.w    #2,d5
  6328.         move.w    d6,(a2,d5.l)
  6329.  
  6330.         lea    $28(a3),a0
  6331.         subq.l    #8,a5                    ;less cycles.
  6332.         move.l    a3,z80_pc_base
  6333.  
  6334.         fetch_next_i
  6335.         cnop    0,128
  6336.  
  6337. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6338. ;        CBEF - SET 5, A
  6339. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6340.  
  6341. z80_optc_CBEF:    subq.l    #2,a5                    ;less cycles.
  6342.         or.b    #%00100000,d3
  6343.         fetch_next_i
  6344.         cnop    0,128
  6345.  
  6346. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6347. ;        F0 - LD A, ($FF00+x)
  6348. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6349.  
  6350. z80_optcode_F0:    move.w    #$ff00,d7
  6351.         move.b    (a0)+,d7
  6352.         subq.l    #3,a5
  6353.         move.b    (a2,d7.l),d3
  6354.  
  6355.         fetch_next_i
  6356.         cnop    0,128
  6357.  
  6358. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6359. ;        CBF0 - SET 6, B
  6360. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6361.  
  6362. z80_optc_CBF0:    subq.l    #2,a5
  6363.         or.w    #%0100000000000000,d1
  6364.         fetch_next_i
  6365.         cnop    0,128
  6366.  
  6367. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6368. ;        F1 - POP AF
  6369. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6370.  
  6371. z80_optcode_F1:    subq.l    #3,a5                    ;less cycles.
  6372.         READW_D5_TO_D7
  6373.         move.b    d7,d3                    ;a returned.
  6374.         addq.w    #2,d5
  6375.  
  6376.         lsr.w    #8,d7                    ;d7 = f.B (znhc0000).
  6377.         move.b    d7,d6
  6378.         lsr.b    #4,d7                    ;d7 = f.B (0000znhc).
  6379.         move.b    d7,d4
  6380.         and.b    #1,d4                    ;d4 = 0000000c.
  6381.         lsr.b    #1,d7                    ;d7 = 00000znh.
  6382.         and.b    #%100,d7
  6383.         or.b    d7,d4                    ;d4 = mc680x0 flags.
  6384.  
  6385.         fetch_next_i
  6386.         cnop    0,128
  6387.  
  6388. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6389. ;        CBF1 - SET 6, C
  6390. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6391.  
  6392. z80_optc_CBF1:    subq.l    #2,a5                    ;less cycles.
  6393.         or.b    #%01000000,d1
  6394.         fetch_next_i
  6395.         cnop    0,128
  6396.  
  6397. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6398. ;        F2 - LD A, ($FF00+C)
  6399. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6400.  
  6401. z80_optcode_F2:    move.w    #$ff00,d7
  6402.         subq.l    #2,a5
  6403.         move.b    d1,d7
  6404.         move.b    (a2,d7.l),d3
  6405.  
  6406.         fetch_next_i
  6407.         cnop    0,128
  6408.  
  6409. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6410. ;        CBF2 - SET 6, D
  6411. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6412.  
  6413. z80_optc_CBF2:    subq.l    #2,a5                    ;less cycles.
  6414.         or.w    #%0100000000000000,d0
  6415.         fetch_next_i
  6416.         cnop    0,128
  6417.  
  6418. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6419. ;        F3 - DI (disable interrupts)
  6420. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6421.  
  6422. z80_optcode_F3:    subq.l    #1,a5                    ;less cycles.
  6423.         move.b    #1,i_flag                ;no interrupts.
  6424.  
  6425.         fetch_next_i
  6426.         cnop    0,128
  6427.  
  6428. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6429. ;        CBF3 - SET 6, E
  6430. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6431.  
  6432. z80_optc_CBF3:    subq.l    #2,a5                    ;less cycles.
  6433.         or.b    #%01000000,d0
  6434.         fetch_next_i
  6435.         cnop    0,128
  6436.  
  6437. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6438. ;        F4 - DB $F4 ???
  6439. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6440.  
  6441. z80_optcode_F4:    fetch_next_i
  6442.         cnop    0,128
  6443.  
  6444. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6445. ;        CBF4 - SET 6, H
  6446. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6447.  
  6448. z80_optc_CBF4:    subq.l    #2,a5                    ;less cycles.
  6449.         or.w    #%0100000000000000,d2
  6450.         fetch_next_i
  6451.         cnop    0,128
  6452.  
  6453. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6454. ;        F5 - PUSH AF
  6455. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6456.  
  6457. z80_optcode_F5:    move.b    d4,d6                    ;d6 = f.B (000xnzvc).
  6458.         lsl.b    #4,d6                    ;d6 =     (nzvc0000).
  6459.         move.b    d6,d7
  6460.         and.b    #%00010000,d7                ;d7 =     (000c0000).
  6461.         lsl.b    #1,d6                    ;d6 =     (zvc00000).
  6462.         and.b    #%10000000,d6                ;d6 =     (z0000000).
  6463.         or.b    d7,d6                    ;d6 =     (z00c0000).
  6464.                                 ;d6 = af.
  6465.         lsl.w    #8,d6
  6466.         move.b    d3,d6
  6467.  
  6468.         subq.w    #2,d5
  6469.         subq.l    #4,a5
  6470.         move.w    d6,(a2,d5.l)
  6471.  
  6472.         fetch_next_i
  6473.         cnop    0,128
  6474.  
  6475. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6476. ;        CBF5 - SET 6, L
  6477. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6478.  
  6479. z80_optc_CBF5:    subq.l    #2,a5                    ;less cycles.
  6480.         or.b    #%01000000,d2
  6481.         fetch_next_i
  6482.         cnop    0,128
  6483.  
  6484. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6485. ;        F6 - OR x - [n = 0, h = 0, c = 0, z = x]
  6486. ;        MC680x0 CLEARS THE CARRY FLAG ITSELF!
  6487. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6488.  
  6489. z80_optcode_F6:    subq.l    #2,a5
  6490.         or.b    (a0)+,d3
  6491.         move.w    CCR,d4
  6492.  
  6493.         fetch_next_i
  6494.         cnop    0,128
  6495.  
  6496. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6497. ;        CBF6 - SET 6, (HL)
  6498. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6499.  
  6500. z80_optc_CBF6:    subq.l    #4,a5                    ;less cycles.
  6501.         or.b    #%01000000,(a2,d2.l)
  6502.         fetch_next_i
  6503.         cnop    0,128
  6504.  
  6505. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6506. ;        F7 - RST 30h
  6507. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6508.  
  6509. z80_optcode_F7:    move.l    a0,d6
  6510.         subq.w    #2,d5
  6511.         sub.l    z80_pc_base,d6
  6512.         ror.w    #8,d6
  6513.         move.w    d6,(a2,d5.l)
  6514.  
  6515.         lea    $30(a3),a0
  6516.         subq.l    #8,a5
  6517.         move.l    a3,z80_pc_base
  6518.  
  6519.         fetch_next_i
  6520.         cnop    0,128
  6521.  
  6522. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6523. ;        CBF7 - SET 6, A
  6524. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6525.  
  6526. z80_optc_CBF7:    subq.l    #2,a5                    ;less cycles.
  6527.         or.b    #%01000000,d3
  6528.         fetch_next_i
  6529.         cnop    0,128
  6530.  
  6531. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6532. ;        F8 - LD HL, SP+x - [n = 0, h = x, c = x, z = 0]
  6533. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6534.  
  6535. z80_optcode_F8:    move.b    (a0)+,d7
  6536.         move.w    d5,d2
  6537.         ext.w    d7
  6538.         add.w    d7,d2
  6539.         move.w    CCR,d4
  6540.         subq.l    #3,a5                    ;?
  6541.         and.b    #%1,d4
  6542.  
  6543.         fetch_next_i
  6544.         cnop    0,128
  6545.  
  6546. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6547. ;        CBF8 - SET 7, B
  6548. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6549.  
  6550. z80_optc_CBF8:    subq.l    #2,a5                    ;less cycles.
  6551.         or.w    #%1000000000000000,d1
  6552.         fetch_next_i
  6553.         cnop    0,128
  6554.  
  6555. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6556. ;        F9 - LD SP, HL
  6557. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6558.  
  6559. z80_optcode_F9:    move.w    d2,d5
  6560.         subq.l    #2,a5
  6561.  
  6562.         fetch_next_i
  6563.         cnop    0,128
  6564.  
  6565. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6566. ;        CBF9 - SET 7, C
  6567. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6568.  
  6569. z80_optc_CBF9:    subq.l    #2,a5                    ;less cycles.
  6570.         or.b    #%10000000,d1
  6571.         fetch_next_i
  6572.         cnop    0,128
  6573.  
  6574. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6575. ;        FA - LD A, (xx)
  6576. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6577.  
  6578. z80_optcode_FA:    move.w    (a0)+,d7
  6579.         subq.l    #4,a5
  6580.         ror.w    #8,d7
  6581.         blt.s    read_d7_to_d3a
  6582.  
  6583.         move.b    (a3,d7.l),d3                ;rom.
  6584.  
  6585.         fetch_next_i
  6586.         cnop    0,4
  6587.  
  6588. read_d7_to_d3a:    move.b    (a2,d7.l),d3                ;ram.
  6589.  
  6590.         fetch_next_i
  6591.         cnop    0,128
  6592.  
  6593. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6594. ;        CBFA - SET 7, D
  6595. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6596.  
  6597. z80_optc_CBFA:    subq.l    #2,a5                    ;less cycles.
  6598.         or.w    #%1000000000000000,d0
  6599.         fetch_next_i
  6600.         cnop    0,128
  6601.  
  6602. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6603. ;        FB - EI (enable interrupts)
  6604. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6605.  
  6606. z80_optcode_FB:    subq.l    #1,a5
  6607.         clr.b    i_flag                    ;interrupts enabled.
  6608.  
  6609.         bra.w    reti_back
  6610.         cnop    0,128
  6611.  
  6612. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6613. ;        CBFB - SET 7, E
  6614. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6615.  
  6616. z80_optc_CBFB:    subq.l    #2,a5                    ;less cycles.
  6617.         or.b    #%10000000,d0
  6618.         fetch_next_i
  6619.         cnop    0,128
  6620.  
  6621. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6622. ;        FC - DB $FC ???
  6623. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6624.  
  6625. z80_optcode_FC:    fetch_next_i
  6626.         cnop    0,128
  6627.  
  6628. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6629. ;        CBFC - SET 7, H
  6630. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6631.  
  6632. z80_optc_CBFC:    subq.l    #2,a5                    ;less cycles.
  6633.         or.w    #%1000000000000000,d2
  6634.         fetch_next_i
  6635.         cnop    0,128
  6636.  
  6637. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6638. ;        FD - DB $FD ???
  6639. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6640.  
  6641. z80_optcode_FD:    fetch_next_i
  6642.         cnop    0,128
  6643.  
  6644. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6645. ;        CBFD - SET 7, L
  6646. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6647.  
  6648. z80_optc_CBFD:    subq.l    #2,a5                    ;less cycles.
  6649.         or.b    #%10000000,d2
  6650.         fetch_next_i
  6651.         cnop    0,128
  6652.  
  6653. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6654. ;        FE - CP x - [n = 1, h = x, c = x, z = x]
  6655. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6656.  
  6657. z80_optcode_FE:    subq.l    #2,a5
  6658.         cmp.b    (a0)+,d3
  6659.         move.w    CCR,d4
  6660.  
  6661.         fetch_next_i
  6662.         cnop    0,128
  6663.  
  6664. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6665. ;        CBFE - SET 7, (HL)
  6666. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6667.  
  6668. z80_optc_CBFE:    subq.l    #4,a5                    ;less cycles.
  6669.         or.b    #%10000000,(a2,d2.l)
  6670.         fetch_next_i
  6671.         cnop    0,128
  6672.  
  6673. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6674. ;        FF - RST 38h
  6675. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6676.  
  6677. z80_optcode_FF:    move.l    a0,d6
  6678.         sub.l    z80_pc_base,d6
  6679.  
  6680.         ror.w    #8,d6
  6681.         subq.w    #2,d5
  6682.         move.w    d6,(a2,d5.l)
  6683.  
  6684.         lea    $38(a3),a0
  6685.         subq.l    #8,a5
  6686.         move.l    a3,z80_pc_base
  6687.  
  6688.         fetch_next_i
  6689.         cnop    0,128
  6690.  
  6691. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6692. ;        CBFF - SET 7, A
  6693. ;««««««««««««««««««««««««««««««««««««««««««««««»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  6694.  
  6695. z80_optc_CBFF:    subq.l    #2,a5                    ;less cycles.
  6696.         or.b    #%10000000,d3
  6697.         fetch_next_i
  6698.         cnop    0,128
  6699.